@datagouv/components-next 0.0.30 → 0.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -2
- package/assets/main.css +4 -0
- package/dist/{JsonPreview.client-DEoTeNS0.js → JsonPreview.client-BRhCOHlE.js} +12 -12
- package/dist/{MapContainer.client-CNmXA5i0.js → MapContainer.client-Dhfz-YU8.js} +1 -1
- package/dist/{PdfPreview.client-CsVdmxPR.js → PdfPreview.client--W0FK7CN.js} +5 -5
- package/dist/{Pmtiles.client-GgcBwFa0.js → Pmtiles.client-B6vRTwrm.js} +1 -1
- package/dist/Swagger.client-ch5H8aT2.js +4 -0
- package/dist/{XmlPreview.client-C0lxnMVl.js → XmlPreview.client-BcbnRWAp.js} +14 -14
- package/dist/components-next.css +1 -1
- package/dist/components-next.js +73 -59
- package/dist/components.css +1 -1
- package/dist/{main-D5CXGAAc.js → main-yWiuApVL.js} +13683 -13594
- package/dist/{vue3-xml-viewer.common-WmBgOZ5X.js → vue3-xml-viewer.common-1QyofKqS.js} +1 -1
- package/package.json +1 -1
- package/src/components/Avatar.vue +2 -1
- package/src/components/BrandedButton.vue +4 -1
- package/src/components/ClientOnly.vue +17 -0
- package/src/components/DataserviceCard.vue +50 -78
- package/src/components/DatasetCard.vue +6 -11
- package/src/components/DatasetInformationPanel.vue +1 -1
- package/src/components/DatasetQuality.vue +1 -3
- package/src/components/DatasetQualityInline.vue +3 -3
- package/src/components/ExtraAccordion.vue +1 -4
- package/src/components/OrganizationCard.vue +9 -7
- package/src/components/OwnerType.vue +1 -1
- package/src/components/Placeholder.vue +9 -3
- package/src/components/ResourceAccordion/DataStructure.vue +6 -5
- package/src/components/ResourceAccordion/JsonPreview.client.vue +5 -5
- package/src/components/ResourceAccordion/PdfPreview.client.vue +3 -3
- package/src/components/ResourceAccordion/Preview.vue +5 -5
- package/src/components/ResourceAccordion/ResourceAccordion.vue +2 -2
- package/src/components/ResourceAccordion/SchemaBadge.vue +7 -3
- package/src/components/ResourceAccordion/XmlPreview.client.vue +5 -5
- package/src/components/Tabs/TabGroup.vue +13 -1
- package/src/components/Toggletip.vue +75 -47
- package/src/components/ValueWatcher.vue +18 -0
- package/src/composables/useActiveDescendant.ts +1 -1
- package/src/composables/useReuseType.ts +2 -1
- package/src/config.ts +5 -4
- package/src/functions/datasets.ts +1 -1
- package/src/functions/organizations.ts +14 -0
- package/src/functions/reuses.ts +10 -7
- package/src/functions/schemas.ts +32 -31
- package/src/functions/tabularApi.ts +2 -3
- package/src/functions/users.ts +2 -2
- package/src/main.ts +24 -6
- package/src/types/dataservices.ts +1 -0
- package/src/types/datasets.ts +1 -0
- package/src/types/site.ts +3 -0
- package/dist/Swagger.client-2tUSrvmQ.js +0 -4
- package/src/components/ToggletipButton.vue +0 -14
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
:class="{
|
|
5
5
|
'tabs-sm': size === 'sm',
|
|
6
6
|
}"
|
|
7
|
+
:default-index="props.defaultIndex"
|
|
8
|
+
@change="onChange"
|
|
7
9
|
>
|
|
8
10
|
<slot />
|
|
9
11
|
</TabGroup>
|
|
@@ -12,9 +14,19 @@
|
|
|
12
14
|
<script setup lang="ts">
|
|
13
15
|
import { TabGroup } from '@headlessui/vue'
|
|
14
16
|
|
|
15
|
-
withDefaults(defineProps<{
|
|
17
|
+
const props = withDefaults(defineProps<{
|
|
16
18
|
size?: 'sm' | 'md'
|
|
19
|
+
defaultIndex?: number
|
|
17
20
|
}>(), {
|
|
18
21
|
size: 'md',
|
|
22
|
+
defaultIndex: 0,
|
|
19
23
|
})
|
|
24
|
+
|
|
25
|
+
const emit = defineEmits<{
|
|
26
|
+
change: [value: number]
|
|
27
|
+
}>()
|
|
28
|
+
|
|
29
|
+
const onChange = (index: number) => {
|
|
30
|
+
emit('change', index)
|
|
31
|
+
}
|
|
20
32
|
</script>
|
|
@@ -1,62 +1,90 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<Popover
|
|
3
|
-
v-slot="{ open }"
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
v-slot="{ open, close }"
|
|
4
|
+
ref="popover"
|
|
5
|
+
class="relative"
|
|
6
6
|
>
|
|
7
|
+
<!--
|
|
8
|
+
Little trick to watch for v-slot changes because HeadlessUI doesn't raise an event on open… :-(
|
|
9
|
+
Need to recompute on show because sometimes, the positions where incorrect because after first render, some div load and change the relative position of the button…
|
|
10
|
+
-->
|
|
11
|
+
<ValueWatcher
|
|
12
|
+
:value="open"
|
|
13
|
+
@changed="calculatePanelPosition"
|
|
14
|
+
/>
|
|
7
15
|
<PopoverButton
|
|
8
|
-
v-bind="
|
|
9
|
-
|
|
10
|
-
:as="ToggletipButton"
|
|
16
|
+
v-bind="buttonProps"
|
|
17
|
+
class="w-8 h-8 rounded-full -outline-offset-2 inline-flex items-center justify-center bg-transparent border-transparent hover:!bg-gray-some"
|
|
11
18
|
>
|
|
12
|
-
<slot
|
|
19
|
+
<slot>
|
|
20
|
+
<RiInformationLine class="size-5" />
|
|
21
|
+
</slot>
|
|
13
22
|
</PopoverButton>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
/>
|
|
34
|
-
</PopoverPanel>
|
|
35
|
-
</component>
|
|
23
|
+
|
|
24
|
+
<ClientOnly>
|
|
25
|
+
<Teleport to="#tooltips">
|
|
26
|
+
<PopoverPanel
|
|
27
|
+
v-show="open"
|
|
28
|
+
class="toggletip absolute z-10"
|
|
29
|
+
:class="{
|
|
30
|
+
'p-0': noMargin,
|
|
31
|
+
}"
|
|
32
|
+
:style="panelStyle"
|
|
33
|
+
static
|
|
34
|
+
>
|
|
35
|
+
<slot
|
|
36
|
+
name="toggletip"
|
|
37
|
+
:close
|
|
38
|
+
/>
|
|
39
|
+
</PopoverPanel>
|
|
40
|
+
</Teleport>
|
|
41
|
+
</ClientOnly>
|
|
36
42
|
</Popover>
|
|
37
43
|
</template>
|
|
38
44
|
|
|
39
45
|
<script setup lang="ts">
|
|
40
46
|
import { Popover, PopoverButton, PopoverPanel } from '@headlessui/vue'
|
|
41
|
-
import {
|
|
42
|
-
import
|
|
47
|
+
import { nextTick, onBeforeUnmount, onMounted, onUpdated, ref, useTemplateRef } from 'vue'
|
|
48
|
+
import { RiInformationLine } from '@remixicon/vue'
|
|
49
|
+
import ClientOnly from './ClientOnly.vue'
|
|
50
|
+
import ValueWatcher from './ValueWatcher.vue'
|
|
43
51
|
|
|
44
|
-
|
|
52
|
+
defineProps<{
|
|
53
|
+
buttonProps?: object
|
|
45
54
|
noMargin?: boolean
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
}>()
|
|
56
|
+
|
|
57
|
+
const popoverRef = useTemplateRef('popover')
|
|
58
|
+
const panelStyle = ref({})
|
|
59
|
+
|
|
60
|
+
// Since the parent of the component can have an overflow-hidden
|
|
61
|
+
// we teleport the popover to a #tooltips div in the layout.
|
|
62
|
+
// We need to compute the correct position of the tooltip.
|
|
63
|
+
const calculatePanelPosition = () => {
|
|
64
|
+
nextTick(() => {
|
|
65
|
+
const popover = popoverRef.value?.$el
|
|
66
|
+
|
|
67
|
+
if (!popover) {
|
|
68
|
+
console.error('Cannot find the popover of the Toggletip.)')
|
|
69
|
+
return
|
|
70
|
+
}
|
|
71
|
+
console.log(popover)
|
|
72
|
+
const popoverRect = popover.getBoundingClientRect()
|
|
73
|
+
panelStyle.value = {
|
|
74
|
+
left: `${popoverRect.left + window.scrollX}px`,
|
|
75
|
+
top: `${popoverRect.bottom + window.scrollY}px`,
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
onMounted(() => {
|
|
81
|
+
calculatePanelPosition()
|
|
82
|
+
window.addEventListener('resize', calculatePanelPosition)
|
|
51
83
|
})
|
|
52
|
-
defineOptions({ inheritAttrs: false })
|
|
53
|
-
</script>
|
|
54
84
|
|
|
55
|
-
|
|
56
|
-
.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
</style>
|
|
85
|
+
onBeforeUnmount(() => {
|
|
86
|
+
window.removeEventListener('resize', calculatePanelPosition)
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
onUpdated(() => calculatePanelPosition())
|
|
90
|
+
</script>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<slot />
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script setup lang="ts" generic="T">
|
|
6
|
+
import { watch } from 'vue'
|
|
7
|
+
|
|
8
|
+
const props = defineProps<{
|
|
9
|
+
value: T
|
|
10
|
+
}>()
|
|
11
|
+
const emits = defineEmits<{
|
|
12
|
+
changed: [T]
|
|
13
|
+
}>()
|
|
14
|
+
|
|
15
|
+
watch(() => props.value, () => {
|
|
16
|
+
emits('changed', props.value)
|
|
17
|
+
})
|
|
18
|
+
</script>
|
|
@@ -5,7 +5,7 @@ export type Option = {
|
|
|
5
5
|
id: string
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export
|
|
8
|
+
export function useActiveDescendant<T extends Option>(options: MaybeRefOrGetter<Array<T>>, direction: 'horizontal' | 'vertical') {
|
|
9
9
|
const active = ref<string | undefined>()
|
|
10
10
|
|
|
11
11
|
const activeOption = computed<T | undefined>(() => toValue(options).find(option => option.id === active.value))
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { computedAsync } from '@vueuse/core'
|
|
2
2
|
import { toValue, type MaybeRefOrGetter } from 'vue'
|
|
3
|
-
import {
|
|
3
|
+
import { useFetchReuseTypes, getType } from '../functions/reuses'
|
|
4
4
|
|
|
5
5
|
export function useReuseType(id: MaybeRefOrGetter<string>) {
|
|
6
|
+
const fetchReuseTypes = useFetchReuseTypes()
|
|
6
7
|
const label = computedAsync(async () => {
|
|
7
8
|
const idValue = toValue(id)
|
|
8
9
|
const types = await fetchReuseTypes()
|
package/src/config.ts
CHANGED
|
@@ -7,19 +7,20 @@ export type PluginConfig = {
|
|
|
7
7
|
apiBase: string
|
|
8
8
|
devApiKey?: string | null
|
|
9
9
|
datasetQualityGuideUrl?: string
|
|
10
|
+
maxJsonPreviewCharSize?: number // Maximum size of JSON to preview in characters. JSON preview module is partly collapsed by default so we can have a preview for large files.
|
|
11
|
+
maxPdfPreviewByteSize?: number // Maximum size of PDF to preview in bytes
|
|
12
|
+
maxXmlPreviewCharSize?: number // Maximum size of XML to preview in characters. XML preview module can NOT be collapsed by default so we should not have a preview for large files.
|
|
13
|
+
pmtilesViewerBaseUrl?: string | null // Base URL of a pmtiles viewer (ex: https://pmtiles.io/#url=)
|
|
10
14
|
schemaValidataUrl?: string
|
|
11
15
|
schemaDocumentationUrl?: string
|
|
12
16
|
tabularApiUrl?: string
|
|
13
17
|
tabularApiPageSize?: number
|
|
14
18
|
tabularAllowRemote?: boolean
|
|
15
19
|
tabularApiDataserviceId?: string
|
|
16
|
-
pmtilesViewerBaseUrl?: string | null // Base URL of a pmtiles viewer (ex: https://pmtiles.io/#url=)
|
|
17
20
|
customUseFetch?: UseFetchFunction | null
|
|
18
21
|
textClamp?: string | Component | null
|
|
19
22
|
appLink?: Component | null
|
|
20
|
-
|
|
21
|
-
maxPdfPreviewSize?: number // Maximum size of PDF to preview in bytes
|
|
22
|
-
maxXmlPreviewSize?: number // Maximum size of XML to preview in characters
|
|
23
|
+
clientOnly?: Component | null
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
export const configKey = Symbol() as InjectionKey<PluginConfig>
|
|
@@ -8,7 +8,7 @@ function constructUrl(baseUrl: string, path: string): string {
|
|
|
8
8
|
return url.toString()
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
export
|
|
11
|
+
export function getDatasetOEmbedHtml(type: string, id: string): string {
|
|
12
12
|
const config = useComponentsConfig()
|
|
13
13
|
|
|
14
14
|
const staticUrl = constructUrl(config.baseUrl, 'oembed.js')
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useI18n } from 'vue-i18n'
|
|
2
2
|
import type { Component } from 'vue'
|
|
3
3
|
import { RiBankLine, RiBuilding2Line, RiCommunityLine, RiGovernmentLine, RiUserLine } from '@remixicon/vue'
|
|
4
|
+
import { useComponentsConfig } from '../config'
|
|
4
5
|
import type { Organization } from '../types/organizations'
|
|
5
6
|
|
|
6
7
|
export const CERTIFIED = 'certified'
|
|
@@ -15,6 +16,12 @@ export type OrganizationTypes = typeof PUBLIC_SERVICE | typeof ASSOCIATION | typ
|
|
|
15
16
|
|
|
16
17
|
export type UserType = typeof USER
|
|
17
18
|
|
|
19
|
+
function constructUrl(baseUrl: string, path: string): string {
|
|
20
|
+
const url = new URL(baseUrl)
|
|
21
|
+
url.pathname = `${url.pathname}${path}`
|
|
22
|
+
return url.toString()
|
|
23
|
+
}
|
|
24
|
+
|
|
18
25
|
export function isType(organization: Organization, type: OrganizationTypes) {
|
|
19
26
|
return hasBadge(organization, type)
|
|
20
27
|
}
|
|
@@ -83,3 +90,10 @@ export function isOrganizationCertified(organization: Organization | null): bool
|
|
|
83
90
|
if (!organization) return false
|
|
84
91
|
return hasBadge(organization, CERTIFIED) && (isType(organization, PUBLIC_SERVICE) || isType(organization, LOCAL_AUTHORITY))
|
|
85
92
|
}
|
|
93
|
+
|
|
94
|
+
export function getOrganizationOEmbedHtml(type: string, id: string): string {
|
|
95
|
+
const config = useComponentsConfig()
|
|
96
|
+
|
|
97
|
+
const staticUrl = constructUrl(config.baseUrl, 'oembed.js')
|
|
98
|
+
return `<div data-udata-${type}="${id}" data-height="1500" data-width="1200"></div><script data-udata="${config.baseUrl}" src="${staticUrl}" async defer></script>`
|
|
99
|
+
}
|
package/src/functions/reuses.ts
CHANGED
|
@@ -4,17 +4,20 @@ import { useComponentsConfig } from '../config'
|
|
|
4
4
|
import type { ReuseTopic, ReuseType } from '../types/reuses'
|
|
5
5
|
|
|
6
6
|
let reuseTypesRequest: Promise<Array<ReuseType>> | null = null
|
|
7
|
+
export function useFetchReuseTypes() {
|
|
8
|
+
const config = useComponentsConfig()
|
|
9
|
+
const { locale } = useI18n()
|
|
7
10
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
return async (): Promise<Array<ReuseType>> => {
|
|
12
|
+
if (reuseTypesRequest) {
|
|
13
|
+
return reuseTypesRequest
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return await (reuseTypesRequest = ofetch<Array<ReuseType>>('api/1/reuses/types/', {
|
|
13
17
|
baseURL: config.apiBase,
|
|
14
18
|
query: { lang: locale.value },
|
|
15
|
-
})
|
|
19
|
+
}))
|
|
16
20
|
}
|
|
17
|
-
return await reuseTypesRequest
|
|
18
21
|
}
|
|
19
22
|
|
|
20
23
|
export function getType(types: Array<ReuseType>, id: string): string {
|
package/src/functions/schemas.ts
CHANGED
|
@@ -45,20 +45,19 @@ export type SchemaResponseData = Array<RegisteredSchema>
|
|
|
45
45
|
|
|
46
46
|
type SchemaPath = { schema_name: string } | { schema_url: string }
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Get Schema Catalog
|
|
52
|
-
*/
|
|
53
|
-
export async function getCatalog(): Promise<SchemaResponseData> {
|
|
48
|
+
let catalogRequest: Promise<Array<RegisteredSchema>> | null = null
|
|
49
|
+
export function useGetCatalog() {
|
|
54
50
|
const config = useComponentsConfig()
|
|
55
|
-
if (catalogRequest) {
|
|
56
|
-
return catalogRequest
|
|
57
|
-
}
|
|
58
51
|
|
|
59
|
-
return
|
|
60
|
-
|
|
61
|
-
|
|
52
|
+
return async (): Promise<SchemaResponseData> => {
|
|
53
|
+
if (catalogRequest) {
|
|
54
|
+
return catalogRequest
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return await (catalogRequest = ofetch('api/1/datasets/schemas/', {
|
|
58
|
+
baseURL: config.apiBase,
|
|
59
|
+
}))
|
|
60
|
+
}
|
|
62
61
|
}
|
|
63
62
|
|
|
64
63
|
export function findSchemaInCatalog(catalog: Array<RegisteredSchema>, schema: Schema | null): RegisteredSchema | null {
|
|
@@ -66,30 +65,32 @@ export function findSchemaInCatalog(catalog: Array<RegisteredSchema>, schema: Sc
|
|
|
66
65
|
return catalog.find(registeredSchema => schema.name === registeredSchema.name) || null
|
|
67
66
|
}
|
|
68
67
|
|
|
69
|
-
export function
|
|
68
|
+
export function useGetSchemaDocumentation() {
|
|
70
69
|
const config = useComponentsConfig()
|
|
71
|
-
return `${config.schemaDocumentationUrl}${name}/`
|
|
70
|
+
return (name: string) => `${config.schemaDocumentationUrl}${name}/`
|
|
72
71
|
}
|
|
73
72
|
|
|
74
|
-
export function
|
|
73
|
+
export function useGetSchemaValidationUrl() {
|
|
75
74
|
const config = useComponentsConfig()
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
75
|
+
return (resource: Resource, registeredSchema: RegisteredSchema) => {
|
|
76
|
+
if (!resource.schema || !resource.schema.name) {
|
|
77
|
+
return null
|
|
78
|
+
}
|
|
79
79
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
let schemaPath: SchemaPath = { schema_name: `schema-datagouvfr.${resource.schema.name}` }
|
|
81
|
+
if (resource.schema && resource.schema.version) {
|
|
82
|
+
const schemaVersion = resource.schema.version
|
|
83
|
+
const versionUrl = registeredSchema.versions.find(version => version.version_name === schemaVersion)?.schema_url
|
|
84
|
+
if (versionUrl) {
|
|
85
|
+
schemaPath = { schema_url: versionUrl }
|
|
86
|
+
}
|
|
86
87
|
}
|
|
88
|
+
const query = new URLSearchParams({
|
|
89
|
+
'input': 'url',
|
|
90
|
+
'url': resource.url,
|
|
91
|
+
'header-case': 'on',
|
|
92
|
+
...schemaPath,
|
|
93
|
+
}).toString()
|
|
94
|
+
return `${config.schemaValidataUrl}/table-schema?${query}`
|
|
87
95
|
}
|
|
88
|
-
const query = new URLSearchParams({
|
|
89
|
-
'input': 'url',
|
|
90
|
-
'url': resource.url,
|
|
91
|
-
'header-case': 'on',
|
|
92
|
-
...schemaPath,
|
|
93
|
-
}).toString()
|
|
94
|
-
return `${config.schemaValidataUrl}/table-schema?${query}`
|
|
95
96
|
}
|
|
@@ -20,8 +20,7 @@ export async function getData(config: PluginConfig, id: string, page: number, so
|
|
|
20
20
|
/**
|
|
21
21
|
* Call Tabular-api to get table profile
|
|
22
22
|
*/
|
|
23
|
-
export
|
|
23
|
+
export function useGetProfile() {
|
|
24
24
|
const config = useComponentsConfig()
|
|
25
|
-
|
|
26
|
-
return await ofetch(`${config.tabularApiUrl}/api/resources/${id}/profile/`)
|
|
25
|
+
return (id: string) => ofetch(`${config.tabularApiUrl}/api/resources/${id}/profile/`)
|
|
27
26
|
}
|
package/src/functions/users.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { User } from '../types/users'
|
|
2
2
|
import { useComponentsConfig } from '../config'
|
|
3
3
|
|
|
4
|
-
export function
|
|
4
|
+
export function useGetUserAvatar() {
|
|
5
5
|
const config = useComponentsConfig()
|
|
6
|
-
return user.avatar_thumbnail || `${config.apiBase}/api/1/avatars/${user.id}/${size}`
|
|
6
|
+
return (user: User, size: number) => user.avatar_thumbnail || `${config.apiBase}/api/1/avatars/${user.id}/${size}`
|
|
7
7
|
}
|
package/src/main.ts
CHANGED
|
@@ -33,6 +33,7 @@ import DatasetQualityInline from './components/DatasetQualityInline.vue'
|
|
|
33
33
|
import DatasetQualityItem from './components/DatasetQualityItem.vue'
|
|
34
34
|
import DatasetQualityScore from './components/DatasetQualityScore.vue'
|
|
35
35
|
import DatasetQualityTooltipContent from './components/DatasetQualityTooltipContent.vue'
|
|
36
|
+
import ExtraAccordion from './components/ExtraAccordion.vue'
|
|
36
37
|
import OrganizationCard from './components/OrganizationCard.vue'
|
|
37
38
|
import OrganizationNameWithCertificate from './components/OrganizationNameWithCertificate.vue'
|
|
38
39
|
import OwnerType from './components/OwnerType.vue'
|
|
@@ -44,25 +45,34 @@ import ResourceAccordion from './components/ResourceAccordion/ResourceAccordion.
|
|
|
44
45
|
import ResourceIcon from './components/ResourceAccordion/ResourceIcon.vue'
|
|
45
46
|
import Swagger from './components/ResourceAccordion/Swagger.client.vue'
|
|
46
47
|
import ReuseCard from './components/ReuseCard.vue'
|
|
48
|
+
import ReuseDetails from './components/ReuseDetails.vue'
|
|
47
49
|
import SimpleBanner from './components/SimpleBanner.vue'
|
|
48
50
|
import StatBox from './components/StatBox.vue'
|
|
51
|
+
import Tab from './components/Tabs/Tab.vue'
|
|
52
|
+
import TabGroup from './components/Tabs/TabGroup.vue'
|
|
53
|
+
import TabList from './components/Tabs/TabList.vue'
|
|
54
|
+
import TabPanel from './components/Tabs/TabPanel.vue'
|
|
55
|
+
import TabPanels from './components/Tabs/TabPanels.vue'
|
|
49
56
|
import Tooltip from './components/Tooltip.vue'
|
|
57
|
+
import Toggletip from './components/Toggletip.vue'
|
|
50
58
|
import type { UseFetchFunction } from './functions/api.types'
|
|
51
59
|
import { configKey, useComponentsConfig, type PluginConfig } from './config.js'
|
|
52
60
|
|
|
61
|
+
export * from './composables/useActiveDescendant'
|
|
53
62
|
export * from './composables/useReuseType'
|
|
54
63
|
|
|
55
|
-
export * from './functions/dates'
|
|
56
|
-
export * from './functions/organizations'
|
|
57
|
-
export * from './functions/resources'
|
|
58
|
-
export * from './functions/users'
|
|
59
64
|
export * from './functions/datasets'
|
|
60
|
-
export * from './functions/
|
|
65
|
+
export * from './functions/dates'
|
|
61
66
|
export * from './functions/helpers'
|
|
67
|
+
export * from './functions/markdown'
|
|
62
68
|
export * from './functions/matomo'
|
|
63
69
|
export * from './functions/never'
|
|
70
|
+
export * from './functions/organizations'
|
|
71
|
+
export * from './functions/owned'
|
|
72
|
+
export * from './functions/resources'
|
|
73
|
+
export * from './functions/reuses'
|
|
64
74
|
export * from './functions/schemas'
|
|
65
|
-
export * from './functions/
|
|
75
|
+
export * from './functions/users'
|
|
66
76
|
|
|
67
77
|
export type {
|
|
68
78
|
UseFetchFunction,
|
|
@@ -158,6 +168,7 @@ export {
|
|
|
158
168
|
DatasetQualityScore,
|
|
159
169
|
DatasetQualityTooltipContent,
|
|
160
170
|
DateRangeDetails,
|
|
171
|
+
ExtraAccordion,
|
|
161
172
|
OrganizationCard,
|
|
162
173
|
OrganizationNameWithCertificate,
|
|
163
174
|
OwnerType,
|
|
@@ -168,8 +179,15 @@ export {
|
|
|
168
179
|
ResourceAccordion,
|
|
169
180
|
ResourceIcon,
|
|
170
181
|
ReuseCard,
|
|
182
|
+
ReuseDetails,
|
|
171
183
|
SimpleBanner,
|
|
172
184
|
StatBox,
|
|
173
185
|
Swagger,
|
|
186
|
+
Tab,
|
|
187
|
+
TabGroup,
|
|
188
|
+
TabList,
|
|
189
|
+
TabPanel,
|
|
190
|
+
TabPanels,
|
|
174
191
|
Tooltip,
|
|
192
|
+
Toggletip,
|
|
175
193
|
}
|
package/src/types/datasets.ts
CHANGED
package/src/types/site.ts
CHANGED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<BrandedButton
|
|
3
|
-
color="secondary-softer"
|
|
4
|
-
icon-only
|
|
5
|
-
:icon="RiInformationLine"
|
|
6
|
-
size="xs"
|
|
7
|
-
keep-margins-even-without-borders
|
|
8
|
-
/>
|
|
9
|
-
</template>
|
|
10
|
-
|
|
11
|
-
<script setup lang="ts">
|
|
12
|
-
import { RiInformationLine } from '@remixicon/vue'
|
|
13
|
-
import BrandedButton from './BrandedButton.vue'
|
|
14
|
-
</script>
|