@datagouv/components-next 0.2.0 → 1.0.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 (140) hide show
  1. package/README.md +1 -1
  2. package/assets/main.css +56 -1
  3. package/dist/Control-BNCDn-8E.js +148 -0
  4. package/dist/{Datafair.client-x39O4yfF.js → Datafair.client-Dls5AHTE.js} +1 -1
  5. package/dist/Event-BOgJUhNR.js +738 -0
  6. package/dist/Image-BN-4XkIn.js +247 -0
  7. package/dist/{JsonPreview.client-BMsC5JcY.js → JsonPreview.client-DPDTs433.js} +14 -14
  8. package/dist/Map-BdT3i2C4.js +7609 -0
  9. package/dist/MapContainer.client-BdAzd7bj.js +105 -0
  10. package/dist/OSM-CamriM9b.js +71 -0
  11. package/dist/{PdfPreview.client-COOkEkRA.js → PdfPreview.client-CopqSDyt.js} +3 -3
  12. package/dist/{Pmtiles.client-BaiIo4VZ.js → Pmtiles.client-mF6xaOO_.js} +2 -2
  13. package/dist/ScaleLine-BiesrgOv.js +165 -0
  14. package/dist/Swagger.client-eJ7gpfZA.js +4 -0
  15. package/dist/Tile-DCuqwNOI.js +1206 -0
  16. package/dist/TileImage-CmZf8EdU.js +1067 -0
  17. package/dist/View-DcDc7N2K.js +2858 -0
  18. package/dist/{XmlPreview.client-CAdN0w_Y.js → XmlPreview.client-C0OgBkSq.js} +7 -7
  19. package/dist/common-C4rDcQpp.js +243 -0
  20. package/dist/components-next.css +1 -1
  21. package/dist/components-next.js +153 -117
  22. package/dist/components.css +1 -1
  23. package/dist/{MapContainer.client-DeSo8EvG.js → index-BRGqW8aQ.js} +4975 -21416
  24. package/dist/leaflet-src-7m1mB8LI.js +6338 -0
  25. package/dist/{main-Dgri3TQL.js → main-CNHxAJ8J.js} +56758 -51450
  26. package/dist/proj-CKwYjU38.js +1569 -0
  27. package/dist/tilecoord-YW3qEH_j.js +884 -0
  28. package/dist/{vue3-xml-viewer.common-D6skc_Ai.js → vue3-xml-viewer.common-CmAdQfIy.js} +1 -1
  29. package/package.json +5 -1
  30. package/src/components/ActivityList/ActivityList.vue +6 -2
  31. package/src/components/AppLink.vue +4 -1
  32. package/src/components/Avatar.vue +2 -2
  33. package/src/components/AvatarWithName.vue +8 -4
  34. package/src/components/BouncingDots.vue +21 -0
  35. package/src/components/BrandedButton.vue +2 -0
  36. package/src/components/CopyButton.vue +19 -7
  37. package/src/components/DataserviceCard.vue +83 -118
  38. package/src/components/DatasetCard.vue +110 -171
  39. package/src/components/DatasetInformation/DatasetEmbedSection.vue +43 -0
  40. package/src/components/DatasetInformation/DatasetInformationSection.vue +73 -0
  41. package/src/components/DatasetInformation/DatasetSchemaSection.vue +74 -0
  42. package/src/components/DatasetInformation/DatasetSpatialSection.vue +59 -0
  43. package/src/components/DatasetInformation/DatasetTemporalitySection.vue +45 -0
  44. package/src/components/DatasetInformation/index.ts +5 -0
  45. package/src/components/DatasetQualityTooltipContent.vue +3 -3
  46. package/src/components/DescriptionList.vue +1 -4
  47. package/src/components/DescriptionListDetails.vue +5 -0
  48. package/src/components/DescriptionListTerm.vue +5 -0
  49. package/src/components/DiscussionMessageCard.vue +63 -0
  50. package/src/components/ExtraAccordion.vue +4 -4
  51. package/src/components/Form/BadgeSelect.vue +35 -0
  52. package/src/components/Form/FormatSelect.vue +28 -0
  53. package/src/components/Form/GeozoneSelect.vue +52 -0
  54. package/src/components/Form/GranularitySelect.vue +29 -0
  55. package/src/components/Form/LicenseSelect.vue +30 -0
  56. package/src/components/Form/OrganizationSelect.vue +62 -0
  57. package/src/components/Form/OrganizationTypeSelect.vue +34 -0
  58. package/src/components/Form/ReuseTopicSelect.vue +29 -0
  59. package/src/components/Form/SchemaSelect.vue +30 -0
  60. package/src/components/Form/SearchableSelect.vue +334 -0
  61. package/src/components/Form/SelectGroup.vue +132 -0
  62. package/src/components/Form/TagSelect.vue +38 -0
  63. package/src/components/LeafletMap.vue +31 -0
  64. package/src/components/LicenseBadge.vue +24 -0
  65. package/src/components/LoadingBlock.vue +23 -2
  66. package/src/components/MarkdownViewer.vue +3 -1
  67. package/src/components/ObjectCard.vue +42 -0
  68. package/src/components/ObjectCardBadge.vue +22 -0
  69. package/src/components/ObjectCardHeader.vue +35 -0
  70. package/src/components/ObjectCardOwner.vue +43 -0
  71. package/src/components/ObjectCardShortDescription.vue +28 -0
  72. package/src/components/OrganizationCard.vue +35 -20
  73. package/src/components/OrganizationLogo.vue +1 -1
  74. package/src/components/OrganizationNameWithCertificate.vue +13 -7
  75. package/src/components/OwnerTypeIcon.vue +1 -0
  76. package/src/components/Pagination.vue +1 -1
  77. package/src/components/Placeholder.vue +5 -2
  78. package/src/components/PostCard.vue +62 -0
  79. package/src/components/RadioGroup.vue +32 -0
  80. package/src/components/RadioInput.vue +64 -0
  81. package/src/components/ResourceAccordion/EditButton.vue +2 -3
  82. package/src/components/ResourceAccordion/MapContainer.client.vue +20 -16
  83. package/src/components/ResourceAccordion/Metadata.vue +11 -24
  84. package/src/components/ResourceAccordion/Pmtiles.client.vue +1 -1
  85. package/src/components/ResourceAccordion/Preview.vue +1 -1
  86. package/src/components/ResourceAccordion/ResourceAccordion.vue +30 -20
  87. package/src/components/ResourceAccordion/ResourceIcon.vue +1 -0
  88. package/src/components/ResourceAccordion/SchemaBadge.vue +2 -2
  89. package/src/components/ResourceExplorer/ResourceExplorer.vue +243 -0
  90. package/src/components/ResourceExplorer/ResourceExplorerSidebar.vue +116 -0
  91. package/src/components/ResourceExplorer/ResourceExplorerViewer.vue +361 -0
  92. package/src/components/ReuseCard.vue +8 -28
  93. package/src/components/ReuseHorizontalCard.vue +80 -0
  94. package/src/components/Search/BasicAndAdvancedFilters.vue +49 -0
  95. package/src/components/Search/Filter/AccessTypeFilter.vue +37 -0
  96. package/src/components/Search/Filter/DatasetBadgeFilter.vue +40 -0
  97. package/src/components/Search/Filter/FilterButtonGroup.vue +78 -0
  98. package/src/components/Search/Filter/FormatFamilyFilter.vue +39 -0
  99. package/src/components/Search/Filter/LastUpdateRangeFilter.vue +37 -0
  100. package/src/components/Search/Filter/ProducerTypeFilter.vue +39 -0
  101. package/src/components/Search/Filter/ReuseTypeFilter.vue +42 -0
  102. package/src/components/Search/GlobalSearch.vue +611 -0
  103. package/src/components/Search/SearchInput.vue +63 -0
  104. package/src/components/Search/Sidemenu.vue +38 -0
  105. package/src/components/StatBox.vue +5 -5
  106. package/src/components/Tag.vue +30 -0
  107. package/src/components/Toggletip.vue +6 -2
  108. package/src/components/Tooltip.vue +2 -3
  109. package/src/components/TopicCard.vue +134 -0
  110. package/src/components/radioGroupContext.ts +9 -0
  111. package/src/composables/useDebouncedRef.ts +31 -0
  112. package/src/composables/useMetrics.ts +4 -3
  113. package/src/composables/useResourceCapabilities.ts +118 -0
  114. package/src/composables/useRouteQueryBoolean.ts +10 -0
  115. package/src/composables/useSelectModelSync.ts +89 -0
  116. package/src/composables/useStableQueryParams.ts +84 -0
  117. package/src/config.ts +4 -0
  118. package/src/functions/api.ts +17 -6
  119. package/src/functions/api.types.ts +4 -2
  120. package/src/functions/datasets.ts +1 -29
  121. package/src/functions/description.ts +33 -0
  122. package/src/functions/helpers.ts +11 -0
  123. package/src/functions/markdown.ts +60 -16
  124. package/src/functions/metrics.ts +33 -0
  125. package/src/functions/organizations.ts +5 -5
  126. package/src/main.ts +89 -7
  127. package/src/types/dataservices.ts +14 -12
  128. package/src/types/datasets.ts +20 -7
  129. package/src/types/discussions.ts +20 -0
  130. package/src/types/licenses.ts +3 -3
  131. package/src/types/organizations.ts +13 -1
  132. package/src/types/owned.ts +4 -2
  133. package/src/types/pages.ts +70 -0
  134. package/src/types/posts.ts +27 -0
  135. package/src/types/resources.ts +6 -0
  136. package/src/types/reuses.ts +14 -5
  137. package/src/types/search.ts +379 -0
  138. package/src/types/users.ts +12 -3
  139. package/dist/Swagger.client-CpLgaLg6.js +0 -4
  140. package/src/components/DatasetInformationPanel.vue +0 -211
@@ -0,0 +1,247 @@
1
+ import { aC as I, E as f, aq as R, aB as d, u as C } from "./proj-CKwYjU38.js";
2
+ const r = typeof navigator < "u" && typeof navigator.userAgent < "u" ? navigator.userAgent.toLowerCase() : "", v = r.includes("safari") && !r.includes("chrom");
3
+ v && (r.includes("version/15.4") || /cpu (os|iphone os) 15_4 like mac os x/.test(r));
4
+ const D = r.includes("webkit") && !r.includes("edge"), _ = r.includes("macintosh"), m = typeof devicePixelRatio < "u" ? devicePixelRatio : 1, A = typeof WorkerGlobalScope < "u" && typeof OffscreenCanvas < "u" && self instanceof WorkerGlobalScope, u = typeof Image < "u" && Image.prototype.decode, p = typeof createImageBitmap == "function", w = (function() {
5
+ let e = !1;
6
+ try {
7
+ const t = Object.defineProperty({}, "passive", {
8
+ get: function() {
9
+ e = !0;
10
+ }
11
+ });
12
+ window.addEventListener("_", null, t), window.removeEventListener("_", null, t);
13
+ } catch {
14
+ }
15
+ return e;
16
+ })(), O = {
17
+ IDLE: 0,
18
+ LOADING: 1,
19
+ LOADED: 2,
20
+ /**
21
+ * Indicates that tile loading failed
22
+ * @type {number}
23
+ */
24
+ ERROR: 3,
25
+ EMPTY: 4
26
+ };
27
+ function g(e, t, n, i) {
28
+ let s;
29
+ return n && n.length ? s = /** @type {HTMLCanvasElement} */
30
+ n.shift() : A ? s = new OffscreenCanvas(e || 300, t || 300) : s = document.createElement("canvas"), e && (s.width = e), t && (s.height = t), /** @type {CanvasRenderingContext2D} */
31
+ s.getContext("2d", i);
32
+ }
33
+ let l;
34
+ function S() {
35
+ return l || (l = g(1, 1)), l;
36
+ }
37
+ function T(e) {
38
+ const t = e.canvas;
39
+ t.width = 1, t.height = 1, e.clearRect(0, 0, 1, 1);
40
+ }
41
+ function P(e) {
42
+ let t = e.offsetWidth;
43
+ const n = getComputedStyle(e);
44
+ return t += parseInt(n.marginLeft, 10) + parseInt(n.marginRight, 10), t;
45
+ }
46
+ function M(e) {
47
+ let t = e.offsetHeight;
48
+ const n = getComputedStyle(e);
49
+ return t += parseInt(n.marginTop, 10) + parseInt(n.marginBottom, 10), t;
50
+ }
51
+ function N(e, t) {
52
+ const n = t.parentNode;
53
+ n && n.replaceChild(e, t);
54
+ }
55
+ function B(e) {
56
+ for (; e.lastChild; )
57
+ e.lastChild.remove();
58
+ }
59
+ function G(e, t) {
60
+ const n = e.childNodes;
61
+ for (let i = 0; ; ++i) {
62
+ const s = n[i], o = t[i];
63
+ if (!s && !o)
64
+ break;
65
+ if (s !== o) {
66
+ if (!s) {
67
+ e.appendChild(o);
68
+ continue;
69
+ }
70
+ if (!o) {
71
+ e.removeChild(s), --i;
72
+ continue;
73
+ }
74
+ e.insertBefore(o, s);
75
+ }
76
+ }
77
+ }
78
+ function W(e) {
79
+ return e[0] > 0 && e[1] > 0;
80
+ }
81
+ function b(e, t, n) {
82
+ return n === void 0 && (n = [0, 0]), n[0] = e[0] * t + 0.5 | 0, n[1] = e[1] * t + 0.5 | 0, n;
83
+ }
84
+ function k(e, t) {
85
+ return Array.isArray(e) ? e : (t === void 0 ? t = [e, e] : (t[0] = e, t[1] = e), t);
86
+ }
87
+ const c = {
88
+ IDLE: 0,
89
+ LOADING: 1,
90
+ LOADED: 2,
91
+ ERROR: 3,
92
+ EMPTY: 4
93
+ };
94
+ class V extends I {
95
+ /**
96
+ * @param {import("./extent.js").Extent} extent Extent.
97
+ * @param {number|Array<number>|undefined} resolution Resolution. If provided as array, x and y
98
+ * resolution will be assumed.
99
+ * @param {number} pixelRatio Pixel ratio.
100
+ * @param {import("./ImageState.js").default|Loader} stateOrLoader State.
101
+ */
102
+ constructor(t, n, i, s) {
103
+ super(), this.extent = t, this.pixelRatio_ = i, this.resolution = n, this.state = typeof s == "function" ? c.IDLE : s, this.image_ = null, this.loader = typeof s == "function" ? s : null;
104
+ }
105
+ /**
106
+ * @protected
107
+ */
108
+ changed() {
109
+ this.dispatchEvent(f.CHANGE);
110
+ }
111
+ /**
112
+ * @return {import("./extent.js").Extent} Extent.
113
+ */
114
+ getExtent() {
115
+ return this.extent;
116
+ }
117
+ /**
118
+ * @return {import('./DataTile.js').ImageLike} Image.
119
+ */
120
+ getImage() {
121
+ return this.image_;
122
+ }
123
+ /**
124
+ * @return {number} PixelRatio.
125
+ */
126
+ getPixelRatio() {
127
+ return this.pixelRatio_;
128
+ }
129
+ /**
130
+ * @return {number|Array<number>} Resolution.
131
+ */
132
+ getResolution() {
133
+ return (
134
+ /** @type {number} */
135
+ this.resolution
136
+ );
137
+ }
138
+ /**
139
+ * @return {import("./ImageState.js").default} State.
140
+ */
141
+ getState() {
142
+ return this.state;
143
+ }
144
+ /**
145
+ * Load not yet loaded URI.
146
+ */
147
+ load() {
148
+ if (this.state == c.IDLE && this.loader) {
149
+ this.state = c.LOADING, this.changed();
150
+ const t = this.getResolution(), n = Array.isArray(t) ? t[0] : t;
151
+ R(
152
+ () => this.loader(
153
+ this.getExtent(),
154
+ n,
155
+ this.getPixelRatio()
156
+ )
157
+ ).then((i) => {
158
+ "image" in i && (this.image_ = i.image), "extent" in i && (this.extent = i.extent), "resolution" in i && (this.resolution = i.resolution), "pixelRatio" in i && (this.pixelRatio_ = i.pixelRatio), (i instanceof HTMLImageElement || p && i instanceof ImageBitmap || i instanceof HTMLCanvasElement || i instanceof HTMLVideoElement) && (this.image_ = i), this.state = c.LOADED;
159
+ }).catch((i) => {
160
+ this.state = c.ERROR, console.error(i);
161
+ }).finally(() => this.changed());
162
+ }
163
+ }
164
+ /**
165
+ * @param {import('./DataTile.js').ImageLike} image The image.
166
+ */
167
+ setImage(t) {
168
+ this.image_ = t;
169
+ }
170
+ /**
171
+ * @param {number|Array<number>} resolution Resolution.
172
+ */
173
+ setResolution(t) {
174
+ this.resolution = t;
175
+ }
176
+ }
177
+ function F(e, t, n) {
178
+ const i = (
179
+ /** @type {HTMLImageElement} */
180
+ e
181
+ );
182
+ let s = !0, o = !1, a = !1;
183
+ const h = [
184
+ d(i, f.LOAD, function() {
185
+ a = !0, o || t();
186
+ })
187
+ ];
188
+ return i.src && u ? (o = !0, i.decode().then(function() {
189
+ s && t();
190
+ }).catch(function(E) {
191
+ s && (a ? t() : n());
192
+ })) : h.push(d(i, f.ERROR, n)), function() {
193
+ s = !1, h.forEach(C);
194
+ };
195
+ }
196
+ function y(e, t) {
197
+ return new Promise((n, i) => {
198
+ function s() {
199
+ a(), n(e);
200
+ }
201
+ function o() {
202
+ a(), i(new Error("Image load error"));
203
+ }
204
+ function a() {
205
+ e.removeEventListener("load", s), e.removeEventListener("error", o);
206
+ }
207
+ e.addEventListener("load", s), e.addEventListener("error", o);
208
+ });
209
+ }
210
+ function x(e, t) {
211
+ return t && (e.src = t), e.src && u ? new Promise(
212
+ (n, i) => e.decode().then(() => n(e)).catch(
213
+ (s) => e.complete && e.width ? n(e) : i(s)
214
+ )
215
+ ) : y(e);
216
+ }
217
+ function K(e, t) {
218
+ return t && (e.src = t), e.src && u && p ? e.decode().then(() => createImageBitmap(e)).catch((n) => {
219
+ if (e.complete && e.width)
220
+ return e;
221
+ throw n;
222
+ }) : x(e);
223
+ }
224
+ export {
225
+ m as D,
226
+ V as I,
227
+ _ as M,
228
+ w as P,
229
+ O as T,
230
+ D as W,
231
+ M as a,
232
+ T as b,
233
+ g as c,
234
+ c as d,
235
+ K as e,
236
+ N as f,
237
+ S as g,
238
+ x as h,
239
+ A as i,
240
+ G as j,
241
+ W as k,
242
+ F as l,
243
+ P as o,
244
+ B as r,
245
+ b as s,
246
+ k as t
247
+ };
@@ -1,9 +1,9 @@
1
- import { defineComponent as S, defineAsyncComponent as b, ref as o, computed as w, onMounted as N, createElementBlock as p, openBlock as s, createBlock as d, createCommentVNode as T, createVNode as u, unref as t, toDisplayString as i, withCtx as f, createElementVNode as h } from "vue";
2
- import { d as P, u as E, j as q, a as m, F as v } from "./main-Dgri3TQL.js";
1
+ import { defineComponent as S, defineAsyncComponent as b, ref as o, computed as w, onMounted as N, createElementBlock as p, openBlock as s, createBlock as f, createCommentVNode as T, createVNode as u, unref as t, toDisplayString as i, withCtx as d, createElementVNode as h } from "vue";
2
+ import { u as P, a as E, g as q, _ as m, F as v } from "./main-CNHxAJ8J.js";
3
3
  const B = { class: "fr-text--xs" }, O = { key: 0 }, V = {
4
4
  key: 1,
5
5
  class: "text-gray-medium"
6
- }, D = /* @__PURE__ */ S({
6
+ }, L = /* @__PURE__ */ S({
7
7
  __name: "JsonPreview.client",
8
8
  props: {
9
9
  resource: {}
@@ -11,15 +11,15 @@ const B = { class: "fr-text--xs" }, O = { key: 0 }, V = {
11
11
  setup(k) {
12
12
  const z = b(
13
13
  () => import("./vue3-json-viewer-BXwup7nO.js").then((e) => (Promise.resolve({ }), e.JsonViewer))
14
- ), g = k, x = P(), { t: n } = E(), l = o(null), c = o(!1), r = o(null), y = o(!1), _ = w(() => q(g.resource)), J = w(() => {
15
- const e = _.value;
14
+ ), g = k, x = P(), { t: n } = E(), l = o(null), c = o(!1), r = o(null), _ = o(!1), y = w(() => q(g.resource)), J = w(() => {
15
+ const e = y.value;
16
16
  if (!e || !x.maxJsonPreviewCharSize)
17
17
  return !1;
18
18
  const a = x.maxJsonPreviewCharSize;
19
19
  return e <= a;
20
20
  }), C = async () => {
21
21
  if (!J.value) {
22
- y.value = !0;
22
+ _.value = !0;
23
23
  return;
24
24
  }
25
25
  c.value = !0, r.value = null;
@@ -48,32 +48,32 @@ const B = { class: "fr-text--xs" }, O = { key: 0 }, V = {
48
48
  "expand-depth": 2,
49
49
  "indent-width": 2
50
50
  }, null, 8, ["value"])
51
- ])) : c.value ? (s(), p("div", V, i(t(n)("Chargement de l'aperçu JSON...")), 1)) : y.value ? (s(), d(m, {
51
+ ])) : c.value ? (s(), p("div", V, i(t(n)("Chargement de l'aperçu JSON...")), 1)) : _.value ? (s(), f(m, {
52
52
  key: 2,
53
53
  type: "warning",
54
54
  class: "flex items-center space-x-2"
55
55
  }, {
56
- default: f(() => [
56
+ default: d(() => [
57
57
  u(t(v), { class: "shink-0 size-6" }),
58
- h("span", null, i(_.value ? t(n)("Fichier JSON trop volumineux pour l'aperçu. Pour consulter le fichier complet, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.") : t(n)("L'aperçu n'est pas disponible car la taille du fichier est inconnue. Pour consulter le fichier complet, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.")), 1)
58
+ h("span", null, i(y.value ? t(n)("Fichier JSON trop volumineux pour l'aperçu. Pour consulter le fichier complet, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.") : t(n)("L'aperçu n'est pas disponible car la taille du fichier est inconnue. Pour consulter le fichier complet, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.")), 1)
59
59
  ]),
60
60
  _: 1
61
- })) : r.value === "network" ? (s(), d(m, {
61
+ })) : r.value === "network" ? (s(), f(m, {
62
62
  key: 3,
63
63
  type: "warning",
64
64
  class: "flex items-center space-x-2"
65
65
  }, {
66
- default: f(() => [
66
+ default: d(() => [
67
67
  u(t(v), { class: "shink-0 size-6" }),
68
68
  h("span", null, i(t(n)("Ce fichier JSON ne peut pas être prévisualisé, peut-être parce qu'il est hébergé sur un autre site qui ne l'autorise pas. Pour le consulter, téléchargez-le en cliquant sur le bouton bleu ou depuis l'onglet Téléchargements.")), 1)
69
69
  ]),
70
70
  _: 1
71
- })) : r.value ? (s(), d(m, {
71
+ })) : r.value ? (s(), f(m, {
72
72
  key: 4,
73
73
  type: "warning",
74
74
  class: "flex items-center space-x-2"
75
75
  }, {
76
- default: f(() => [
76
+ default: d(() => [
77
77
  u(t(v), { class: "shink-0 size-6" }),
78
78
  h("span", null, i(t(n)("Erreur lors du chargement de l'aperçu JSON.")), 1)
79
79
  ]),
@@ -83,5 +83,5 @@ const B = { class: "fr-text--xs" }, O = { key: 0 }, V = {
83
83
  }
84
84
  });
85
85
  export {
86
- D as default
86
+ L as default
87
87
  };