@datagouv/components-next 1.0.2-dev.157 → 1.0.2-dev.159

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 (27) hide show
  1. package/dist/{Datafair.client-Bblv8Xec.js → Datafair.client-CTp0KeR2.js} +1 -1
  2. package/dist/{ImagePreview.client-B9p_XZrx.js → ImagePreview.client-CpOf0A1Y.js} +1 -1
  3. package/dist/{JsonPreview.client-DzVXqgqm.js → JsonPreview.client-DL3IBzvJ.js} +2 -2
  4. package/dist/{MapContainer.client-JFOchs0n.js → MapContainer.client-DwyIXqCs.js} +2 -2
  5. package/dist/{PdfPreview.client-De6XYp-a.js → PdfPreview.client-BoR_Mszg.js} +2 -2
  6. package/dist/{Pmtiles.client-CiLdMaAj.js → Pmtiles.client-BpMMDkeP.js} +1 -1
  7. package/dist/{PreviewWrapper.vue_vue_type_script_setup_true_lang-keE4Kr1e.js → PreviewWrapper.vue_vue_type_script_setup_true_lang-Dnz4oSUe.js} +7 -10
  8. package/dist/{XmlPreview.client-CdxaPXOa.js → XmlPreview.client-C3Y-2Eij.js} +3 -3
  9. package/dist/components-next.css +1 -1
  10. package/dist/components-next.js +178 -175
  11. package/dist/{index-BIk8VKNQ.js → index-B8gyXZY_.js} +1 -1
  12. package/dist/{leaflet-src-B_fapURG.js → leaflet-src-BDNw7m8K.js} +1 -1
  13. package/dist/{main-B0TVT1sb.js → main-SY-oNn1W.js} +12080 -11701
  14. package/dist/{vue3-xml-viewer.common-Bx0jB4Yr.js → vue3-xml-viewer.common-CBGfdux9.js} +1 -1
  15. package/package.json +3 -3
  16. package/src/components/DataserviceCard.vue +6 -0
  17. package/src/components/DataserviceQuality.vue +82 -0
  18. package/src/components/DataserviceQualityInline.vue +31 -0
  19. package/src/components/DataserviceQualityTooltipContent.vue +79 -0
  20. package/src/components/DatasetQuality.vue +11 -11
  21. package/src/components/DatasetQualityInline.vue +2 -2
  22. package/src/components/DatasetQualityTooltipContent.vue +1 -1
  23. package/src/main.ts +10 -4
  24. package/src/types/dataservices.ts +15 -0
  25. /package/src/components/{DatasetQualityItem.vue → QualityItem.vue} +0 -0
  26. /package/src/components/{DatasetQualityItemWarning.vue → QualityItemWarning.vue} +0 -0
  27. /package/src/components/{DatasetQualityScore.vue → QualityScore.vue} +0 -0
@@ -1,4 +1,4 @@
1
- import { g as Ke } from "./main-B0TVT1sb.js";
1
+ import { g as Ke } from "./main-SY-oNn1W.js";
2
2
  import We from "vue";
3
3
  function Fe($, K) {
4
4
  for (var V = 0; V < K.length; V++) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@datagouv/components-next",
3
- "version": "1.0.2-dev.157",
3
+ "version": "1.0.2-dev.159",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "engines": {
@@ -23,7 +23,7 @@
23
23
  "src"
24
24
  ],
25
25
  "dependencies": {
26
- "@floating-ui/vue": "^1.1.11",
26
+ "@floating-ui/vue": "^2.0.1",
27
27
  "@headlessui/vue": "^1.7.23",
28
28
  "@remixicon/vue": "^4.9.0",
29
29
  "@types/hast": "^3.0.4",
@@ -83,7 +83,7 @@
83
83
  "typescript": "^5.9.3",
84
84
  "vite": "^7.3.3",
85
85
  "vite-plugin-vue-devtools": "^8.1.2",
86
- "vue": "^3.5.35",
86
+ "vue": "^3.5.40",
87
87
  "vue-router": "^5.0.7",
88
88
  "vue-tsc": "^3.3.2"
89
89
  },
@@ -99,6 +99,11 @@
99
99
  </p>
100
100
  </div>
101
101
  </div>
102
+ <DataserviceQualityInline
103
+ v-if="dataservice.quality"
104
+ :quality="dataservice.quality"
105
+ />
106
+
102
107
  <ObjectCardShortDescription
103
108
  v-if="showDescription"
104
109
  :text="dataservice.description"
@@ -126,6 +131,7 @@ import ObjectCardBadge from './ObjectCardBadge.vue'
126
131
  import ObjectCardHeader from './ObjectCardHeader.vue'
127
132
  import ObjectCardOwner from './ObjectCardOwner.vue'
128
133
  import ObjectCardShortDescription from './ObjectCardShortDescription.vue'
134
+ import DataserviceQualityInline from './DataserviceQualityInline.vue'
129
135
 
130
136
  type Props = {
131
137
  dataservice: Dataservice
@@ -0,0 +1,82 @@
1
+ <template>
2
+ <Toggletip
3
+ :styled-button="false"
4
+ button-class="flex items-center gap-1 rounded-sm p-1.5 -m-1.5 border-transparent -outline-offset-2 hover:bg-gray-some transition-colors w-full text-left"
5
+ :button-props="{ title: t('Qualité des métadonnées') }"
6
+ >
7
+ <QualityScore
8
+ :score="quality.score"
9
+ class="w-full"
10
+ />
11
+ <RiInformationLine
12
+ class="size-5 shrink-0"
13
+ aria-hidden="true"
14
+ />
15
+ <template #toggletip>
16
+ <DataserviceQualityTooltipContent :quality />
17
+ </template>
18
+ </Toggletip>
19
+ <template v-if="!hideWarnings">
20
+ <ul class="list-none pl-0">
21
+ <QualityItemWarning
22
+ :quality-item="quality.has_description"
23
+ :message="t('Description non renseignée')"
24
+ />
25
+ <QualityItemWarning
26
+ :quality-item="quality.has_machine_documentation"
27
+ :message="t('Documentation machine (OpenAPI) manquante')"
28
+ />
29
+ <QualityItemWarning
30
+ :quality-item="quality.has_technical_documentation"
31
+ :message="t('Documentation technique manquante')"
32
+ />
33
+ <QualityItemWarning
34
+ :quality-item="quality.has_business_documentation"
35
+ :message="t('Documentation métier manquante')"
36
+ />
37
+ <QualityItemWarning
38
+ :quality-item="quality.license"
39
+ :message="t('Licence non renseignée')"
40
+ />
41
+ <QualityItemWarning
42
+ :quality-item="quality.has_contact_point"
43
+ :message="t('Point de contact non renseigné')"
44
+ />
45
+ <QualityItemWarning
46
+ :quality-item="quality.has_base_api_url"
47
+ :message="t(`URL de base de l'API non renseignée`)"
48
+ />
49
+ <QualityItemWarning
50
+ :quality-item="quality.availability_documented"
51
+ :message="t('Disponibilité non documentée')"
52
+ />
53
+ <QualityItemWarning
54
+ :quality-item="quality.rate_limiting_documented"
55
+ :message="t(`Limite d'appels non documentée`)"
56
+ />
57
+ <QualityItemWarning
58
+ :quality-item="quality.access_conditions_clear"
59
+ :message="t(`Conditions d'accès non précisées`)"
60
+ />
61
+ </ul>
62
+ </template>
63
+ </template>
64
+
65
+ <script setup lang="ts">
66
+ import { RiInformationLine } from '@remixicon/vue'
67
+ import type { DataserviceQuality } from '../types/dataservices'
68
+ import QualityScore from './QualityScore.vue'
69
+ import QualityItemWarning from './QualityItemWarning.vue'
70
+ import DataserviceQualityTooltipContent from './DataserviceQualityTooltipContent.vue'
71
+ import Toggletip from './Toggletip.vue'
72
+ import { useTranslation } from '../composables/useTranslation'
73
+
74
+ withDefaults(defineProps<{
75
+ quality: DataserviceQuality
76
+ hideWarnings?: boolean
77
+ }>(), {
78
+ hideWarnings: false,
79
+ })
80
+
81
+ const { t } = useTranslation()
82
+ </script>
@@ -0,0 +1,31 @@
1
+ <template>
2
+ <div class="m-0 text-sm text-gray-medium">
3
+ <Toggletip
4
+ :styled-button="false"
5
+ button-class="border-transparent -outline-offset-2 inline-flex items-center justify-center hover:bg-gray-lower transition-colors"
6
+ :button-props="{ class: 'relative z-2 gap-1 rounded-sm px-1 -mx-1 group/quality', title: t('Qualité des métadonnées') }"
7
+ >
8
+ <RiInformationLine class="size-3.5 shrink-0" />
9
+ <span class="text-gray-medium text-sm group-hover/quality:underline">{{ t('Métadonnées :') }}</span>
10
+ <QualityScore :score="quality.score" />
11
+ <template #toggletip>
12
+ <DataserviceQualityTooltipContent :quality />
13
+ </template>
14
+ </Toggletip>
15
+ </div>
16
+ </template>
17
+
18
+ <script setup lang="ts">
19
+ import { RiInformationLine } from '@remixicon/vue'
20
+ import type { DataserviceQuality } from '../types/dataservices'
21
+ import QualityScore from './QualityScore.vue'
22
+ import DataserviceQualityTooltipContent from './DataserviceQualityTooltipContent.vue'
23
+ import Toggletip from './Toggletip.vue'
24
+ import { useTranslation } from '../composables/useTranslation'
25
+
26
+ defineProps<{
27
+ quality: DataserviceQuality
28
+ }>()
29
+
30
+ const { t } = useTranslation()
31
+ </script>
@@ -0,0 +1,79 @@
1
+ <template>
2
+ <p class="text-sm text-gray-plain font-bold mb-0">
3
+ {{ t("Qualité des métadonnées :") }}
4
+ </p>
5
+ <ul class="list-none pl-0 space-y-2">
6
+ <QualityItem
7
+ :passed="quality.has_description"
8
+ :message-passed="t('Description renseignée')"
9
+ :message-failed="t('Description non renseignée')"
10
+ class="pb-0"
11
+ />
12
+ <QualityItem
13
+ :passed="quality.has_machine_documentation"
14
+ :message-passed="t('Documentation machine (OpenAPI) disponible')"
15
+ :message-failed="t('Documentation machine (OpenAPI) manquante')"
16
+ class="pb-0"
17
+ />
18
+ <QualityItem
19
+ :passed="quality.has_technical_documentation"
20
+ :message-passed="t('Documentation technique renseignée')"
21
+ :message-failed="t('Documentation technique manquante')"
22
+ class="pb-0"
23
+ />
24
+ <QualityItem
25
+ :passed="quality.has_business_documentation"
26
+ :message-passed="t('Documentation métier renseignée')"
27
+ :message-failed="t('Documentation métier manquante')"
28
+ class="pb-0"
29
+ />
30
+ <QualityItem
31
+ :passed="quality.license"
32
+ :message-passed="t('Licence renseignée')"
33
+ :message-failed="t('Licence non renseignée')"
34
+ class="pb-0"
35
+ />
36
+ <QualityItem
37
+ :passed="quality.has_contact_point"
38
+ :message-passed="t('Point de contact renseigné')"
39
+ :message-failed="t('Point de contact non renseigné')"
40
+ class="pb-0"
41
+ />
42
+ <QualityItem
43
+ :passed="quality.has_base_api_url"
44
+ :message-passed="t(`URL de base de l'API renseignée`)"
45
+ :message-failed="t(`URL de base de l'API non renseignée`)"
46
+ class="pb-0"
47
+ />
48
+ <QualityItem
49
+ :passed="quality.availability_documented"
50
+ :message-passed="t('Disponibilité documentée')"
51
+ :message-failed="t('Disponibilité non documentée')"
52
+ class="pb-0"
53
+ />
54
+ <QualityItem
55
+ :passed="quality.rate_limiting_documented"
56
+ :message-passed="t(`Limite d'appels documentée`)"
57
+ :message-failed="t(`Limite d'appels non documentée`)"
58
+ class="pb-0"
59
+ />
60
+ <QualityItem
61
+ :passed="quality.access_conditions_clear"
62
+ :message-passed="t(`Conditions d'accès claires`)"
63
+ :message-failed="t(`Conditions d'accès non précisées`)"
64
+ class="pb-0"
65
+ />
66
+ </ul>
67
+ </template>
68
+
69
+ <script setup lang="ts">
70
+ import type { DataserviceQuality } from '../types/dataservices'
71
+ import { useTranslation } from '../composables/useTranslation'
72
+ import QualityItem from './QualityItem.vue'
73
+
74
+ defineProps<{
75
+ quality: DataserviceQuality
76
+ }>()
77
+
78
+ const { t } = useTranslation()
79
+ </script>
@@ -13,7 +13,7 @@
13
13
  {{ t('Qualité des métadonnées:') }}
14
14
  </span>
15
15
  </span>
16
- <DatasetQualityScore
16
+ <QualityScore
17
17
  :score="quality.score"
18
18
  class="w-full"
19
19
  />
@@ -23,35 +23,35 @@
23
23
  </Toggletip>
24
24
  <template v-if="!hideWarnings">
25
25
  <ul class="list-none pl-0">
26
- <DatasetQualityItemWarning
26
+ <QualityItemWarning
27
27
  :quality-item="quality.dataset_description_quality"
28
28
  :message="t('Description des données non renseignée')"
29
29
  />
30
- <DatasetQualityItemWarning
30
+ <QualityItemWarning
31
31
  :quality-item="quality.resources_documentation"
32
32
  :message="t('Documentation des fichiers manquante')"
33
33
  />
34
- <DatasetQualityItemWarning
34
+ <QualityItemWarning
35
35
  :quality-item="quality.license"
36
36
  :message="t('Licence non renseignée')"
37
37
  />
38
- <DatasetQualityItemWarning
38
+ <QualityItemWarning
39
39
  :quality-item="quality.update_frequency && quality.update_fulfilled_in_time"
40
40
  :message="quality.update_frequency ? t('Fréquence de mise à jour non respectée') : t('Fréquence de mise à jour non renseignée')"
41
41
  />
42
- <DatasetQualityItemWarning
42
+ <QualityItemWarning
43
43
  :quality-item="quality.has_open_format"
44
44
  :message="t('Formats de fichiers non standards')"
45
45
  />
46
- <DatasetQualityItemWarning
46
+ <QualityItemWarning
47
47
  :quality-item="quality.temporal_coverage"
48
48
  :message="t('Couverture temporelle non renseignée')"
49
49
  />
50
- <DatasetQualityItemWarning
50
+ <QualityItemWarning
51
51
  :quality-item="quality.spatial"
52
52
  :message="t('Couverture spatiale non renseignée')"
53
53
  />
54
- <DatasetQualityItemWarning
54
+ <QualityItemWarning
55
55
  :quality-item="quality.all_resources_available"
56
56
  :message="t('Certains fichiers ne sont pas disponibles')"
57
57
  />
@@ -62,8 +62,8 @@
62
62
  <script setup lang="ts">
63
63
  import { RiInformationLine } from '@remixicon/vue'
64
64
  import type { Quality } from '../types/datasets'
65
- import DatasetQualityItemWarning from './DatasetQualityItemWarning.vue'
66
- import DatasetQualityScore from './DatasetQualityScore.vue'
65
+ import QualityItemWarning from './QualityItemWarning.vue'
66
+ import QualityScore from './QualityScore.vue'
67
67
  import Toggletip from './Toggletip.vue'
68
68
  import DatasetQualityTooltipContent from './DatasetQualityTooltipContent.vue'
69
69
  import { useTranslation } from '../composables/useTranslation'
@@ -7,7 +7,7 @@
7
7
  >
8
8
  <RiInformationLine class="size-3.5 shrink-0" />
9
9
  <span class="text-gray-medium text-sm group-hover/quality:underline">{{ t('Métadonnées :') }}</span>
10
- <DatasetQualityScore :score="quality.score" />
10
+ <QualityScore :score="quality.score" />
11
11
  <template #toggletip>
12
12
  <DatasetQualityTooltipContent :quality />
13
13
  </template>
@@ -18,7 +18,7 @@
18
18
  <script setup lang="ts">
19
19
  import { RiInformationLine } from '@remixicon/vue'
20
20
  import type { Quality } from '../types/datasets'
21
- import DatasetQualityScore from './DatasetQualityScore.vue'
21
+ import QualityScore from './QualityScore.vue'
22
22
  import DatasetQualityTooltipContent from './DatasetQualityTooltipContent.vue'
23
23
  import Toggletip from './Toggletip.vue'
24
24
  import { useTranslation } from '../composables/useTranslation'
@@ -68,7 +68,7 @@
68
68
  import type { Quality } from '../types/datasets'
69
69
  import { useComponentsConfig } from '../config'
70
70
  import { useTranslation } from '../composables/useTranslation'
71
- import DatasetQualityItem from './DatasetQualityItem.vue'
71
+ import DatasetQualityItem from './QualityItem.vue'
72
72
 
73
73
  defineProps<{
74
74
  quality: Quality
package/src/main.ts CHANGED
@@ -40,6 +40,9 @@ import BannerAction from './components/BannerAction.vue'
40
40
  import BrandedButton from './components/BrandedButton.vue'
41
41
  import CopyButton from './components/CopyButton.vue'
42
42
  import DataserviceCard from './components/DataserviceCard.vue'
43
+ import DataserviceQuality from './components/DataserviceQuality.vue'
44
+ import DataserviceQualityInline from './components/DataserviceQualityInline.vue'
45
+ import DataserviceQualityTooltipContent from './components/DataserviceQualityTooltipContent.vue'
43
46
  import DatasetCard from './components/DatasetCard.vue'
44
47
  import DataStructure from './components/ResourceAccordion/DataStructure.vue'
45
48
  import Downloads from './components/ResourceAccordion/Downloads.vue'
@@ -54,8 +57,8 @@ import LicenseBadge from './components/LicenseBadge.vue'
54
57
  import Tag from './components/Tag.vue'
55
58
  import DatasetQuality from './components/DatasetQuality.vue'
56
59
  import DatasetQualityInline from './components/DatasetQualityInline.vue'
57
- import DatasetQualityItem from './components/DatasetQualityItem.vue'
58
- import DatasetQualityScore from './components/DatasetQualityScore.vue'
60
+ import QualityItem from './components/QualityItem.vue'
61
+ import QualityScore from './components/QualityScore.vue'
59
62
  import ProgressBar from './components/ProgressBar.vue'
60
63
  import DatasetQualityTooltipContent from './components/DatasetQualityTooltipContent.vue'
61
64
  import ExtraAccordion from './components/ExtraAccordion.vue'
@@ -335,6 +338,9 @@ export {
335
338
  BrandedButton,
336
339
  CopyButton,
337
340
  DataserviceCard,
341
+ DataserviceQuality,
342
+ DataserviceQualityInline,
343
+ DataserviceQualityTooltipContent,
338
344
  DatasetCard,
339
345
  DataStructure,
340
346
  Downloads,
@@ -349,8 +355,8 @@ export {
349
355
  DiscussionMessageCard,
350
356
  DatasetQuality,
351
357
  DatasetQualityInline,
352
- DatasetQualityItem,
353
- DatasetQualityScore,
358
+ QualityItem,
359
+ QualityScore,
354
360
  DatasetQualityTooltipContent,
355
361
  DateRangeDetails,
356
362
  ExtraAccordion,
@@ -31,6 +31,20 @@ export type BaseDataservice = Owned & WithAccessType & {
31
31
 
32
32
  export type NewDataservice = Omit<BaseDataservice, keyof OwnedWithId> & OwnedWithId
33
33
 
34
+ export type DataserviceQuality = {
35
+ has_description: boolean
36
+ has_machine_documentation: boolean
37
+ has_technical_documentation: boolean
38
+ has_business_documentation: boolean
39
+ license: boolean
40
+ has_contact_point: boolean
41
+ has_base_api_url: boolean
42
+ availability_documented: boolean
43
+ rate_limiting_documented: boolean
44
+ access_conditions_clear: boolean
45
+ score: number
46
+ }
47
+
34
48
  export type Dataservice = Owned & WithAccessType & {
35
49
  acronym: string
36
50
  archived_at: string | null
@@ -72,4 +86,5 @@ export type Dataservice = Owned & WithAccessType & {
72
86
  slug: string
73
87
  tags: Array<string>
74
88
  title: string
89
+ quality?: DataserviceQuality
75
90
  }