@premiate/strapi-plugin-maplibre-field 1.1.2 → 1.2.1

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 (69) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/README.md +4 -4
  3. package/dist/_chunks/de-B0QBc7M2.js +27 -0
  4. package/dist/_chunks/de-BMK0skCB.mjs +27 -0
  5. package/dist/_chunks/en-C8iInpNv.mjs +27 -0
  6. package/dist/_chunks/en-CA0XtbN7.js +27 -0
  7. package/dist/_chunks/es-BU6JgkbZ.js +25 -0
  8. package/dist/_chunks/es-DZO4NHjt.mjs +25 -0
  9. package/dist/_chunks/fr-B8NDboqe.mjs +27 -0
  10. package/dist/_chunks/fr-DIBfzRbg.js +27 -0
  11. package/dist/_chunks/{index-DtFDFnhf.mjs → index-B0Nr95wz.mjs} +307 -306
  12. package/dist/_chunks/{index-Bih-3DHy.mjs → index-CBxydRKp.mjs} +14 -11
  13. package/dist/_chunks/{index-DG3FGfzf.js → index-CDY4Awnh.js} +13 -10
  14. package/dist/_chunks/{index-D9yb6SXN.js → index-ysvid6md.js} +312 -312
  15. package/dist/_chunks/it-B-lr3jhh.js +27 -0
  16. package/dist/_chunks/it-DFH6n6E1.mjs +27 -0
  17. package/dist/admin/de-B0QBc7M2.js +27 -0
  18. package/dist/admin/de-BMK0skCB.mjs +27 -0
  19. package/dist/admin/en-C8iInpNv.mjs +27 -0
  20. package/dist/admin/en-CA0XtbN7.js +27 -0
  21. package/dist/admin/es-BU6JgkbZ.js +25 -0
  22. package/dist/admin/es-DZO4NHjt.mjs +25 -0
  23. package/dist/admin/fr-B8NDboqe.mjs +27 -0
  24. package/dist/admin/fr-DIBfzRbg.js +27 -0
  25. package/dist/admin/index-B-3vqPUe.mjs +1836 -0
  26. package/dist/admin/index-B0LVK-NK.js +170 -0
  27. package/dist/admin/index-BaGweGhM.js +1856 -0
  28. package/dist/admin/index-DjL4deZ6.mjs +171 -0
  29. package/dist/admin/index.js +3 -2
  30. package/dist/admin/index.mjs +1 -1
  31. package/dist/admin/it-B-lr3jhh.js +27 -0
  32. package/dist/admin/it-DFH6n6E1.mjs +27 -0
  33. package/dist/server/index.js +11 -6
  34. package/dist/server/index.mjs +9 -5
  35. package/dist/server/src/index.d.ts +9 -4
  36. package/package.json +12 -10
  37. package/dist/_chunks/de-CGU2cyif.mjs +0 -16
  38. package/dist/_chunks/de-Dq_t3Z6M.js +0 -16
  39. package/dist/_chunks/en-BxxNWf9i.mjs +0 -16
  40. package/dist/_chunks/en-CgSPA-1L.js +0 -16
  41. package/dist/_chunks/es-B_cPv3G5.mjs +0 -16
  42. package/dist/_chunks/es-Sgja1XAa.js +0 -16
  43. package/dist/_chunks/fr-B3JIzyzo.js +0 -16
  44. package/dist/_chunks/fr-Dw5wEoDC.mjs +0 -16
  45. package/dist/_chunks/it-BgWDIXzn.js +0 -16
  46. package/dist/_chunks/it-CoUEVPt6.mjs +0 -16
  47. package/dist/admin/src/components/Initializer.d.ts +0 -6
  48. package/dist/admin/src/components/MapInput/basemap-control.d.ts +0 -8
  49. package/dist/admin/src/components/MapInput/credits-control.d.ts +0 -10
  50. package/dist/admin/src/components/MapInput/geocoder-control.d.ts +0 -20
  51. package/dist/admin/src/components/MapInput/index.d.ts +0 -19
  52. package/dist/admin/src/components/MapInput/layer-control.d.ts +0 -18
  53. package/dist/admin/src/components/PluginIcon.d.ts +0 -2
  54. package/dist/admin/src/hooks/usePluginConfig.d.ts +0 -2
  55. package/dist/admin/src/mutations/mutateEditViewHook.d.ts +0 -30
  56. package/dist/admin/src/services/poi-service.d.ts +0 -160
  57. package/dist/admin/src/utils/getTrad.d.ts +0 -2
  58. package/dist/admin/src/utils/pluginId.d.ts +0 -2
  59. package/dist/admin/src/utils/prefixPluginTranslations.d.ts +0 -3
  60. package/dist/server/src/bootstrap.d.ts +0 -2
  61. package/dist/server/src/config/index.d.ts +0 -62
  62. package/dist/server/src/config/schema.d.ts +0 -53
  63. package/dist/server/src/controllers/config.d.ts +0 -9
  64. package/dist/server/src/controllers/index.d.ts +0 -10
  65. package/dist/server/src/destroy.d.ts +0 -2
  66. package/dist/server/src/register.d.ts +0 -5
  67. package/dist/server/src/routes/admin.d.ts +0 -12
  68. package/dist/server/src/routes/index.d.ts +0 -14
  69. package/dist/server/src/types/config.d.ts +0 -26
package/CHANGELOG.md CHANGED
@@ -5,6 +5,83 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.2.1] - 2026-02-22
9
+
10
+ ### Added
11
+
12
+ - **Full-width map field** - Map field now spans all 12 columns in the edit view layout for better usability
13
+ - **Rebalanced info grid** - Place name (6 cols), longitude (3 cols), latitude (3 cols) instead of 8-2-2
14
+
15
+ ### Fixed
16
+
17
+ - **Admin route security** - Protected `/config` endpoint with `policies: ['admin::isAuthenticatedAdmin']` to allow access to every Strapi authenticated role and prevent unauthorized access
18
+ - **Vite/esbuild class field transpilation** - Removed ES2022 class field declarations from `BasemapControl` and `LayerControlImpl` to prevent `__publicField is not defined` runtime error when Strapi's Vite pre-bundles the plugin with esbuild targeting below ES2022
19
+ - **MapLibre GL pinned to v5.16.0** - Pinned exact version to avoid `__publicField` runtime error with newer releases that use ES2022 class fields
20
+ - **Prettier formatting** - Fixed line length violation in config schema
21
+
22
+ ### Changed
23
+
24
+ - **Node.js support** - Extended compatibility to Node.js 24.x (>=20.0.0 <=24.x.x)
25
+ - **TypeScript** - Updated from ^5.0.0 to ^5.5.0
26
+ - **ESLint** - Updated from ^8.0.0 to ^8.57.0
27
+ - **PMTiles** - Updated from v4.3.2 to v4.4.0
28
+
29
+ ### Known issue: `__publicField is not defined` in Strapi dev mode
30
+
31
+ `maplibre-gl` v5 uses ES2022 class field declarations internally (e.g., in the MLT codec). Strapi's Vite dev server does not set `optimizeDeps.esbuildOptions.target` to match its modern `build.target`, so esbuild may transpile these fields into `__publicField()` helper calls that fail at runtime. For this reason `maplibre-gl` is pinned to `5.16.0`.
32
+
33
+ This is an upstream issue at the intersection of Strapi, Vite 5, and maplibre-gl v5. It may be resolved by a future release of any of these projects.
34
+
35
+ **Workaround:** create `src/admin/vite.config.ts` in the Strapi host app:
36
+
37
+ ```typescript
38
+ import { mergeConfig, type UserConfig } from 'vite';
39
+
40
+ export default (config: UserConfig) => {
41
+ return mergeConfig(config, {
42
+ optimizeDeps: {
43
+ esbuildOptions: {
44
+ target: 'es2022',
45
+ },
46
+ },
47
+ });
48
+ };
49
+ ```
50
+
51
+ ## [1.2.0] - 2026-01-29
52
+
53
+ ### Added
54
+
55
+ - **Localized SearchBox component** - New standalone search component with full internationalization support (en, de, fr, it) [[df821d2](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/df821d2)]
56
+ - **Geocoder service module** - Centralized geocoding logic in dedicated `geocoder-service.ts` [[7025954](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/7025954)]
57
+
58
+ ### Changed
59
+
60
+ - **Geocoder architecture** - Moved search box outside map component to fix form submission conflicts and improve UX [[7025954](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/7025954)]
61
+ - **Map attributions system** - Replaced custom credits control with MapLibre's native `AttributionControl` that automatically reads attributions from map style JSON [[ba7a18d](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/ba7a18d)]
62
+ - **Default map provider** - Switched from MapLibre demo tiles to OpenFreeMap for more reliable public tile service [[f718470](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/f718470)]
63
+ - **SearchBox styling** - Fully adapted to Strapi Design System for consistent UI/UX [[5059b4e](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/5059b4e), [f2bf749](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/f2bf749)]
64
+ - **Marker color** - Aligned marker color to match Strapi's primary color palette [[06f47cf](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/06f47cf)]
65
+ - **Screenshot** - Updated to reflect new UI with external SearchBox [[ced9092](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/ced9092)]
66
+
67
+ ### Fixed
68
+
69
+ - **Form submission bug** - Resolved critical issue where search input inside map interfered with Strapi form submission [[7025954](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/7025954)]
70
+ - **Translation conventions** - Aligned translations with Strapi v5 plugin standards [[ca4cdeb](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/ca4cdeb)]
71
+
72
+ ### Removed
73
+
74
+ - **Deprecated geocoder-control.tsx** - Replaced by standalone SearchBox component (257 lines removed) [[7025954](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/7025954)]
75
+ - **Custom credits-control.tsx** - Replaced by MapLibre native control (129 lines removed) [[ba7a18d](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/ba7a18d)]
76
+ - **Unused dependency** - Removed `@maplibre/maplibre-gl-geocoder` package [[3a352fd](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/3a352fd)]
77
+
78
+ ### Technical Improvements
79
+
80
+ - Reduced package-lock.json size significantly (cleanup of transitive dependencies)
81
+ - Improved test coverage with updated mocks for geocoder refactoring [[6e4aeef](https://github.com/Premiate-Edizioni/strapi-plugin-maplibre-field/commit/6e4aeef)]
82
+ - Cleaner component architecture with separation of concerns
83
+ - Better TypeScript typing across geocoding services
84
+
8
85
  ## [1.1.2] - 2026-01-18
9
86
 
10
87
  ### Documentation
package/README.md CHANGED
@@ -48,9 +48,9 @@ export default {
48
48
  config: {
49
49
  mapStyles: [
50
50
  {
51
- id: "osm",
52
- name: "OpenStreetMap",
53
- url: "https://demotiles.maplibre.org/style.json",
51
+ id: "ofm",
52
+ name: "OpenFreeMap",
53
+ url: "https://tiles.openfreemap.org/styles/liberty",
54
54
  isDefault: true,
55
55
  },
56
56
  ],
@@ -119,7 +119,7 @@ The selected location is saved as a GeoJSON Feature with coordinates, name, addr
119
119
 
120
120
  The plugin supports any [MapLibre Style Specification](https://maplibre.org/maplibre-style-spec/) compatible provider:
121
121
 
122
- - **MapLibre Demo Tiles** - Free, public, no API key required (setup as fallback if no configuration available)
122
+ - **OpenFreeMap** - Free, public OpenStreetMap tiles, no API key required (setup as fallback if no configuration available)
123
123
  - **MapTiler** - Requires API key, multiple styles available
124
124
  - **Stadia Maps** - Requires API key, OSM-based styles
125
125
  - **PMTiles** - Self-hosted tiles, no tile server required
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const label = "Karte";
4
+ const description = "Eine Kartenkomponente, basierend auf MapLibre";
5
+ const search = "Suchen Sie nach einem Ort oder einer Adresse";
6
+ const de = {
7
+ label,
8
+ description,
9
+ search,
10
+ "search.placeholder": "Suchen Sie nach einem Ort...",
11
+ "search.button": "Suchen",
12
+ "fields.address": "Adresse",
13
+ "fields.longitude": "Längengrad",
14
+ "fields.latitude": "Breitengrad",
15
+ "fields.poi-name": "POI-Name",
16
+ "fields.poi-address": "Vollständige Adresse",
17
+ "coordinates-saved": "Koordinaten gespeichert",
18
+ "geocoding.success": "Adresse erfolgreich aktualisiert",
19
+ "geocoding.error": "Fehler beim Abrufen der Adresse. Bitte versuchen Sie es erneut.",
20
+ "geocoding.no-results": "Keine Adresse für diesen Standort gefunden",
21
+ "i18n.localized.label": "Lokalisierung für dieses Feld aktivieren",
22
+ "i18n.localized.description": "Das Feld kann in jeder Sprache unterschiedliche Werte haben"
23
+ };
24
+ exports.default = de;
25
+ exports.description = description;
26
+ exports.label = label;
27
+ exports.search = search;
@@ -0,0 +1,27 @@
1
+ const label = "Karte";
2
+ const description = "Eine Kartenkomponente, basierend auf MapLibre";
3
+ const search = "Suchen Sie nach einem Ort oder einer Adresse";
4
+ const de = {
5
+ label,
6
+ description,
7
+ search,
8
+ "search.placeholder": "Suchen Sie nach einem Ort...",
9
+ "search.button": "Suchen",
10
+ "fields.address": "Adresse",
11
+ "fields.longitude": "Längengrad",
12
+ "fields.latitude": "Breitengrad",
13
+ "fields.poi-name": "POI-Name",
14
+ "fields.poi-address": "Vollständige Adresse",
15
+ "coordinates-saved": "Koordinaten gespeichert",
16
+ "geocoding.success": "Adresse erfolgreich aktualisiert",
17
+ "geocoding.error": "Fehler beim Abrufen der Adresse. Bitte versuchen Sie es erneut.",
18
+ "geocoding.no-results": "Keine Adresse für diesen Standort gefunden",
19
+ "i18n.localized.label": "Lokalisierung für dieses Feld aktivieren",
20
+ "i18n.localized.description": "Das Feld kann in jeder Sprache unterschiedliche Werte haben"
21
+ };
22
+ export {
23
+ de as default,
24
+ description,
25
+ label,
26
+ search
27
+ };
@@ -0,0 +1,27 @@
1
+ const label = "Map";
2
+ const description = "A map custom field using MapLibre";
3
+ const search = "Search for a place or address on OpenStreetMap";
4
+ const en = {
5
+ label,
6
+ description,
7
+ search,
8
+ "search.placeholder": "Search for a location...",
9
+ "search.button": "Search",
10
+ "fields.address": "Address",
11
+ "fields.longitude": "Longitude",
12
+ "fields.latitude": "Latitude",
13
+ "fields.poi-name": "POI Name",
14
+ "fields.poi-address": "Full Address",
15
+ "coordinates-saved": "Coordinates set",
16
+ "geocoding.success": "Address updated successfully",
17
+ "geocoding.error": "Failed to fetch address. Please try again.",
18
+ "geocoding.no-results": "No address found for this location",
19
+ "i18n.localized.label": "Enable localization for this field",
20
+ "i18n.localized.description": "The field can have different values in each language"
21
+ };
22
+ export {
23
+ en as default,
24
+ description,
25
+ label,
26
+ search
27
+ };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const label = "Map";
4
+ const description = "A map custom field using MapLibre";
5
+ const search = "Search for a place or address on OpenStreetMap";
6
+ const en = {
7
+ label,
8
+ description,
9
+ search,
10
+ "search.placeholder": "Search for a location...",
11
+ "search.button": "Search",
12
+ "fields.address": "Address",
13
+ "fields.longitude": "Longitude",
14
+ "fields.latitude": "Latitude",
15
+ "fields.poi-name": "POI Name",
16
+ "fields.poi-address": "Full Address",
17
+ "coordinates-saved": "Coordinates set",
18
+ "geocoding.success": "Address updated successfully",
19
+ "geocoding.error": "Failed to fetch address. Please try again.",
20
+ "geocoding.no-results": "No address found for this location",
21
+ "i18n.localized.label": "Enable localization for this field",
22
+ "i18n.localized.description": "The field can have different values in each language"
23
+ };
24
+ exports.default = en;
25
+ exports.description = description;
26
+ exports.label = label;
27
+ exports.search = search;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const label = "Mapa";
4
+ const description = "Un campo personalizado de mapa usando MapLibre";
5
+ const search = "Buscar un lugar o dirección en OpenStreetMap";
6
+ const es = {
7
+ label,
8
+ description,
9
+ search,
10
+ "fields.address": "Dirección",
11
+ "fields.longitude": "Longitud",
12
+ "fields.latitude": "Latitud",
13
+ "fields.poi-name": "Nombre del POI",
14
+ "fields.poi-address": "Dirección completa",
15
+ "coordinates-saved": "Coordenadas guardadas",
16
+ "geocoding.success": "Dirección actualizada con éxito",
17
+ "geocoding.error": "Error al obtener la dirección. Por favor, inténtelo de nuevo.",
18
+ "geocoding.no-results": "No se encontró dirección para esta ubicación",
19
+ "i18n.localized.label": "Activar localización para este campo",
20
+ "i18n.localized.description": "El campo puede tener valores diferentes en cada idioma"
21
+ };
22
+ exports.default = es;
23
+ exports.description = description;
24
+ exports.label = label;
25
+ exports.search = search;
@@ -0,0 +1,25 @@
1
+ const label = "Mapa";
2
+ const description = "Un campo personalizado de mapa usando MapLibre";
3
+ const search = "Buscar un lugar o dirección en OpenStreetMap";
4
+ const es = {
5
+ label,
6
+ description,
7
+ search,
8
+ "fields.address": "Dirección",
9
+ "fields.longitude": "Longitud",
10
+ "fields.latitude": "Latitud",
11
+ "fields.poi-name": "Nombre del POI",
12
+ "fields.poi-address": "Dirección completa",
13
+ "coordinates-saved": "Coordenadas guardadas",
14
+ "geocoding.success": "Dirección actualizada con éxito",
15
+ "geocoding.error": "Error al obtener la dirección. Por favor, inténtelo de nuevo.",
16
+ "geocoding.no-results": "No se encontró dirección para esta ubicación",
17
+ "i18n.localized.label": "Activar localización para este campo",
18
+ "i18n.localized.description": "El campo puede tener valores diferentes en cada idioma"
19
+ };
20
+ export {
21
+ es as default,
22
+ description,
23
+ label,
24
+ search
25
+ };
@@ -0,0 +1,27 @@
1
+ const label = "Carte";
2
+ const description = "Un champ carte utilisant MapLibre";
3
+ const search = "Recherche d'un lieu ou d'une adresse";
4
+ const fr = {
5
+ label,
6
+ description,
7
+ search,
8
+ "search.placeholder": "Rechercher un lieu...",
9
+ "search.button": "Rechercher",
10
+ "fields.address": "Adresse",
11
+ "fields.longitude": "Longitude",
12
+ "fields.latitude": "Latitude",
13
+ "fields.poi-name": "Nom du POI",
14
+ "fields.poi-address": "Adresse complète",
15
+ "coordinates-saved": "Coordonnées enregistrées",
16
+ "geocoding.success": "Adresse mise à jour avec succès",
17
+ "geocoding.error": "Impossible de récupérer l'adresse. Veuillez réessayer.",
18
+ "geocoding.no-results": "Aucune adresse trouvée pour cet emplacement",
19
+ "i18n.localized.label": "Activer la localisation pour ce champ",
20
+ "i18n.localized.description": "Le champ peut avoir des valeurs différentes dans chaque langue"
21
+ };
22
+ export {
23
+ fr as default,
24
+ description,
25
+ label,
26
+ search
27
+ };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const label = "Carte";
4
+ const description = "Un champ carte utilisant MapLibre";
5
+ const search = "Recherche d'un lieu ou d'une adresse";
6
+ const fr = {
7
+ label,
8
+ description,
9
+ search,
10
+ "search.placeholder": "Rechercher un lieu...",
11
+ "search.button": "Rechercher",
12
+ "fields.address": "Adresse",
13
+ "fields.longitude": "Longitude",
14
+ "fields.latitude": "Latitude",
15
+ "fields.poi-name": "Nom du POI",
16
+ "fields.poi-address": "Adresse complète",
17
+ "coordinates-saved": "Coordonnées enregistrées",
18
+ "geocoding.success": "Adresse mise à jour avec succès",
19
+ "geocoding.error": "Impossible de récupérer l'adresse. Veuillez réessayer.",
20
+ "geocoding.no-results": "Aucune adresse trouvée pour cet emplacement",
21
+ "i18n.localized.label": "Activer la localisation pour ce champ",
22
+ "i18n.localized.description": "Le champ peut avoir des valeurs différentes dans chaque langue"
23
+ };
24
+ exports.default = fr;
25
+ exports.description = description;
26
+ exports.label = label;
27
+ exports.search = search;