diff --git a/assets/layers/picnic_table/picnic_table.json b/assets/layers/picnic_table/picnic_table.json
index ec7759eaf..077bbe95b 100644
--- a/assets/layers/picnic_table/picnic_table.json
+++ b/assets/layers/picnic_table/picnic_table.json
@@ -147,10 +147,13 @@
"cs": "Tento piknikový stůl je vyroben z plastu (recyklované)"
}
},
- {"if":"material=metal",
- "then":{"en": "This picnic table is made from metal",
+ {
+ "if": "material=metal",
+ "then": {
+ "en": "This picnic table is made from metal",
"nl": "Deze picnictafel is gemaakt uit metaal"
- }}
+ }
+ }
],
"id": "picnic_table-material"
}
diff --git a/assets/layers/playground/playground.json b/assets/layers/playground/playground.json
index 6b8ecb4d1..acc008ac8 100644
--- a/assets/layers/playground/playground.json
+++ b/assets/layers/playground/playground.json
@@ -136,20 +136,32 @@
"tagRenderings": [
"images",
"reviews",
- {"question": {
- "en": "Does one have to pay to use this playground?",
- "nl": "Moet men betalen om deze speeltuin te gebruiken?"
- },"id":"fee",
- "mappings": [
-{"if": "fee=no",
- "alsoShowIf": "fee=",
- "then": {"en": "Free to use", "nl": "Gratis te gebruiken"}
-},{"if": "fee=yes",
-
- "then": {"en": "Paid playground", "nl": "Betalend"}
-}],
+ {
+ "question": {
+ "en": "Does one have to pay to use this playground?",
+ "nl": "Moet men betalen om deze speeltuin te gebruiken?"
+ },
+ "id": "fee",
+ "mappings": [
+ {
+ "if": "fee=no",
+ "alsoShowIf": "fee=",
+ "then": {
+ "en": "Free to use",
+ "nl": "Gratis te gebruiken"
+ }
+ },
+ {
+ "if": "fee=yes",
+ "then": {
+ "en": "Paid playground",
+ "nl": "Betalend"
+ }
+ }
+ ],
"filter": true
- }, {
+ },
+ {
"question": {
"nl": "Wat is de ondergrond van deze speeltuin?",
"en": "Which is the surface of this playground?",
diff --git a/assets/themes/mapcomplete-changes/mapcomplete-changes.json b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
index afc62363b..7873f6b66 100644
--- a/assets/themes/mapcomplete-changes/mapcomplete-changes.json
+++ b/assets/themes/mapcomplete-changes/mapcomplete-changes.json
@@ -3,14 +3,17 @@
"title": {
"en": "Changes made with MapComplete"
},
- "description": {
- "en": "This maps shows all the changes made with MapComplete"
- },
"shortDescription": {
"en": "Shows changes made by MapComplete"
},
+ "description": {
+ "en": "This maps shows all the changes made with MapComplete"
+ },
"icon": "./assets/svg/logo.svg",
"hideFromOverview": true,
+ "startLat": 0,
+ "startLon": 0,
+ "startZoom": 1,
"layers": [
{
"id": "mapcomplete-changes",
diff --git a/langs/en.json b/langs/en.json
index 95b130271..97c72f771 100644
--- a/langs/en.json
+++ b/langs/en.json
@@ -242,6 +242,7 @@
"downloadGeojson": "Download visible data as GeoJSON",
"downloadGpx": "Download as GPX-file",
"downloadGpxHelper": "A GPX-file can be used with most navigation devices and applications",
+ "downloadImage": "Download image",
"exporting": "Exporting…",
"includeMetaData": "Include metadata (last editor, calculated values, …)",
"licenseInfo": "
Copyright notice
The provided data is available under ODbL. Reusing it is gratis for any purpose, but - the attribution © OpenStreetMap contributors must be shown
- Any change must be published under the same license
Please read the full copyright notice for details.",
@@ -304,7 +305,8 @@
"aboutMapComplete": "About MapComplete",
"filter": "Filter data",
"moreUtilsTitle": "Discover more",
- "showIntroduction": "Show introduction"
+ "showIntroduction": "Show introduction",
+ "title": "Menu"
},
"morescreen": {
"createYourOwnTheme": "Create your own MapComplete theme from scratch",
diff --git a/langs/layers/nl.json b/langs/layers/nl.json
index 7298fb24b..892c89764 100644
--- a/langs/layers/nl.json
+++ b/langs/layers/nl.json
@@ -5832,6 +5832,9 @@
},
"2": {
"then": "Deze picknictafel is gemaakt uit (gerecycleerd) plastiek"
+ },
+ "3": {
+ "then": "Deze picnictafel is gemaakt uit metaal"
}
},
"question": "Van welk materiaal is deze picknicktafel gemaakt?",
@@ -5887,6 +5890,17 @@
},
"question": "Is deze speeltuin toegankelijk voor rolstoelgebruikers?"
},
+ "fee": {
+ "mappings": {
+ "0": {
+ "then": "Gratis te gebruiken"
+ },
+ "1": {
+ "then": "Betalend"
+ }
+ },
+ "question": "Moet men betalen om deze speeltuin te gebruiken?"
+ },
"playground-access": {
"mappings": {
"0": {
diff --git a/public/css/index-tailwind-output.css b/public/css/index-tailwind-output.css
index f2d62eee1..02dd9fe6f 100644
--- a/public/css/index-tailwind-output.css
+++ b/public/css/index-tailwind-output.css
@@ -1168,6 +1168,14 @@ input[type="range"].range-lg::-moz-range-thumb {
right: 0px;
}
+.top-4 {
+ top: 1rem;
+}
+
+.right-4 {
+ right: 1rem;
+}
+
.right-10 {
right: 2.5rem;
}
@@ -1236,10 +1244,6 @@ input[type="range"].range-lg::-moz-range-thumb {
top: 0.75rem;
}
-.top-4 {
- top: 1rem;
-}
-
.top-1 {
top: 0.25rem;
}
@@ -1522,14 +1526,14 @@ input[type="range"].range-lg::-moz-range-thumb {
margin-left: 1rem;
}
-.mt-2 {
- margin-top: 0.5rem;
-}
-
.mt-8 {
margin-top: 2rem;
}
+.mt-2 {
+ margin-top: 0.5rem;
+}
+
.mb-8 {
margin-bottom: 2rem;
}
@@ -1753,6 +1757,10 @@ input[type="range"].range-lg::-moz-range-thumb {
height: 1.25rem;
}
+.h-10 {
+ height: 2.5rem;
+}
+
.h-14 {
height: 3.5rem;
}
@@ -1777,10 +1785,6 @@ input[type="range"].range-lg::-moz-range-thumb {
height: 20rem;
}
-.h-10 {
- height: 2.5rem;
-}
-
.h-20 {
height: 5rem;
}
@@ -2007,6 +2011,10 @@ input[type="range"].range-lg::-moz-range-thumb {
width: 1.25rem;
}
+.w-10 {
+ width: 2.5rem;
+}
+
.w-14 {
width: 3.5rem;
}
@@ -2029,10 +2037,6 @@ input[type="range"].range-lg::-moz-range-thumb {
width: min-content;
}
-.w-10 {
- width: 2.5rem;
-}
-
.w-20 {
width: 5rem;
}
@@ -2949,10 +2953,6 @@ input[type="range"].range-lg::-moz-range-thumb {
border-width: 2px;
}
-.border-0 {
- border-width: 0px;
-}
-
.\!border-0 {
border-width: 0px !important;
}
@@ -2973,6 +2973,10 @@ input[type="range"].range-lg::-moz-range-thumb {
border-width: 10px;
}
+.border-0 {
+ border-width: 0px;
+}
+
.border-x {
border-left-width: 1px;
border-right-width: 1px;
diff --git a/src/Logic/State/UserSettingsMetaTagging.ts b/src/Logic/State/UserSettingsMetaTagging.ts
index 6e568c5c3..33a5ae85b 100644
--- a/src/Logic/State/UserSettingsMetaTagging.ts
+++ b/src/Logic/State/UserSettingsMetaTagging.ts
@@ -1,42 +1,14 @@
import { Utils } from "../../Utils"
/** This code is autogenerated - do not edit. Edit ./assets/layers/usersettings/usersettings.json instead */
export class ThemeMetaTagging {
- public static readonly themeName = "usersettings"
+ public static readonly themeName = "usersettings"
- public metaTaggging_for_usersettings(feat: { properties: Record }) {
- Utils.AddLazyProperty(feat.properties, "_mastodon_candidate_md", () =>
- feat.properties._description
- .match(/\[[^\]]*\]\((.*(mastodon|en.osm.town).*)\).*/)
- ?.at(1)
- )
- Utils.AddLazyProperty(
- feat.properties,
- "_d",
- () => feat.properties._description?.replace(/</g, "<")?.replace(/>/g, ">") ?? ""
- )
- Utils.AddLazyProperty(feat.properties, "_mastodon_candidate_a", () =>
- ((feat) => {
- const e = document.createElement("div")
- e.innerHTML = feat.properties._d
- return Array.from(e.getElementsByTagName("a")).filter(
- (a) => a.href.match(/mastodon|en.osm.town/) !== null
- )[0]?.href
- })(feat)
- )
- Utils.AddLazyProperty(feat.properties, "_mastodon_link", () =>
- ((feat) => {
- const e = document.createElement("div")
- e.innerHTML = feat.properties._d
- return Array.from(e.getElementsByTagName("a")).filter(
- (a) => a.getAttribute("rel")?.indexOf("me") >= 0
- )[0]?.href
- })(feat)
- )
- Utils.AddLazyProperty(
- feat.properties,
- "_mastodon_candidate",
- () => feat.properties._mastodon_candidate_md ?? feat.properties._mastodon_candidate_a
- )
- feat.properties["__current_backgroun"] = "initial_value"
- }
-}
+ public metaTaggging_for_usersettings(feat: {properties: Record}) {
+ Utils.AddLazyProperty(feat.properties, '_mastodon_candidate_md', () => feat.properties._description.match(/\[[^\]]*\]\((.*(mastodon|en.osm.town).*)\).*/)?.at(1) )
+ Utils.AddLazyProperty(feat.properties, '_d', () => feat.properties._description?.replace(/</g,'<')?.replace(/>/g,'>') ?? '' )
+ Utils.AddLazyProperty(feat.properties, '_mastodon_candidate_a', () => (feat => {const e = document.createElement('div');e.innerHTML = feat.properties._d;return Array.from(e.getElementsByTagName("a")).filter(a => a.href.match(/mastodon|en.osm.town/) !== null)[0]?.href }) (feat) )
+ Utils.AddLazyProperty(feat.properties, '_mastodon_link', () => (feat => {const e = document.createElement('div');e.innerHTML = feat.properties._d;return Array.from(e.getElementsByTagName("a")).filter(a => a.getAttribute("rel")?.indexOf('me') >= 0)[0]?.href})(feat) )
+ Utils.AddLazyProperty(feat.properties, '_mastodon_candidate', () => feat.properties._mastodon_candidate_md ?? feat.properties._mastodon_candidate_a )
+ feat.properties['__current_backgroun'] = 'initial_value'
+ }
+}
\ No newline at end of file
diff --git a/src/Models/MenuState.ts b/src/Models/MenuState.ts
index ec04fd46c..0d5a73ccc 100644
--- a/src/Models/MenuState.ts
+++ b/src/Models/MenuState.ts
@@ -19,14 +19,13 @@ export class MenuState {
public static readonly pageNames = [
"copyright", "copyright_icons", "community_index", "hotkeys",
"privacy", "filter", "background", "about_theme", "download", "favourites",
- "usersettings", "share", "menu"
+ "usersettings", "share", "menu",
] as const
- public readonly menuIsOpened
public readonly pageStates: Record>
public readonly highlightedLayerInFilters: UIEventSource = new UIEventSource(
- undefined
+ undefined,
)
public highlightedUserSetting: UIEventSource = new UIEventSource(undefined)
@@ -38,19 +37,20 @@ export class MenuState {
states[pageName] = toggle
}
this.pageStates = >>states
-this.menuIsOpened = this.pageStates.menu
- for (const pageName of MenuState.pageNames) {
-
+ for (const pageName of MenuState.pageNames) {
+ if(pageName === "menu"){
+ continue
+ }
this.pageStates[pageName].addCallback(enabled => {
if (enabled) {
- this.menuIsOpened.set(false)
+ this.pageStates.menu.set(false)
}
})
}
-
+
const visitedBefore = LocalStorageSource.GetParsed(
- themeid + "thememenuisopened", false
+ themeid + "thememenuisopened", false,
)
if (!visitedBefore.data && shouldShowWelcomeMessage) {
this.pageStates.about_theme.set(true)
@@ -85,8 +85,8 @@ this.menuIsOpened = this.pageStates.menu
Utils.sortedByLevenshteinDistance(
highlightTagRendering,
UserRelatedState.availableUserSettingsIds,
- (x) => x
- )
+ (x) => x,
+ ),
)
}
this.highlightedUserSetting.setData(highlightTagRendering)
@@ -101,16 +101,17 @@ this.menuIsOpened = this.pageStates.menu
* Returns 'true' if at least one menu was opened
*/
public closeAll(): boolean {
- for (const key in this.pageStates) {
- const toggle = this.pageStates[key]
+ const ps = this.pageStates
+ for (const key in ps) {
+ const toggle = ps[key]
const wasOpen = toggle.data
toggle.setData(false)
if (wasOpen) {
return true
}
}
- if (this.menuIsOpened.data) {
- this.menuIsOpened.set(false)
+ if (ps.menu.data) {
+ ps.menu.set(false)
return true
}
}
diff --git a/src/UI/Base/FloatOver.svelte b/src/UI/Base/FloatOver.svelte
index 8ed605ba0..ad68faaf8 100644
--- a/src/UI/Base/FloatOver.svelte
+++ b/src/UI/Base/FloatOver.svelte
@@ -3,6 +3,7 @@
import { ariaLabel } from "../../Utils/ariaLabel"
import Translations from "../i18n/Translations"
import { XCircleIcon } from "@babeard/svelte-heroicons/solid"
+ import { CloseButton } from "flowbite-svelte"
/**
* The slotted element will be shown on top, with a lower-opacity border
@@ -29,7 +30,7 @@
}}
>
{}}
>
@@ -37,22 +38,21 @@
- dispatch("close")}
- use:ariaLabel={Translations.t.general.backToMap}
- >
-
+
+
+ dispatch("close")}
+ />
+
diff --git a/src/UI/BigComponents/MenuDrawer.svelte b/src/UI/BigComponents/MenuDrawer.svelte
index 39bb2a8d8..f4dd9373d 100644
--- a/src/UI/BigComponents/MenuDrawer.svelte
+++ b/src/UI/BigComponents/MenuDrawer.svelte
@@ -11,7 +11,7 @@
import CommunityIndexView from "./CommunityIndexView.svelte"
import Community from "../../assets/svg/Community.svelte"
import LoginToggle from "../Base/LoginToggle.svelte"
- import { Sidebar } from "flowbite-svelte"
+ import { CloseButton, Sidebar } from "flowbite-svelte"
import HotkeyTable from "./HotkeyTable.svelte"
import { Utils } from "../../Utils"
import Constants from "../../Models/Constants"
@@ -47,6 +47,8 @@
import LogoutButton from "../Base/LogoutButton.svelte"
import { BoltIcon } from "@babeard/svelte-heroicons/mini"
import Copyright from "../../assets/svg/Copyright.svelte"
+ import Pencil from "../../assets/svg/Pencil.svelte"
+ import Squares2x2 from "@babeard/svelte-heroicons/mini/Squares2x2"
export let state: ThemeViewState
let userdetails = state.osmConnection.userDetails
@@ -62,20 +64,22 @@
-
-
Menu
-
-
-{#if $showHome}
-
-
- {#if Utils.isIframe}
-
- {:else}
-
- {/if}
-
- {/if}
+
+
+
+
+ {pg.menu.set(false)}} />
+
+ {#if $showHome}
+
+
+ {#if Utils.isIframe}
+
+ {:else}
+
+ {/if}
+
+ {/if}
@@ -128,6 +132,8 @@
+
+
@@ -221,7 +227,7 @@
-
+
@@ -248,8 +254,15 @@
|
-
+
+
+
+
+
@@ -346,12 +359,14 @@
}
- :global(.sidebar-button, .sidebar-button, .sidebar-unit > a) {
+ :global(.sidebar-button, .sidebar-unit > a) {
display: flex;
align-items: center;
border-radius: 0.25rem !important;
padding: 0.4rem 0.75rem !important;
text-decoration: none !important;
+ width: 100%;
+ text-align: start;
}
:global(.sidebar-button > svg , .sidebar-button > img, .sidebar-unit a > img, .sidebar-unit > a svg) {
diff --git a/src/UI/BigComponents/SelectedElementTitle.svelte b/src/UI/BigComponents/SelectedElementTitle.svelte
index ce1bd59a1..97fb3aaa2 100644
--- a/src/UI/BigComponents/SelectedElementTitle.svelte
+++ b/src/UI/BigComponents/SelectedElementTitle.svelte
@@ -8,6 +8,7 @@
import Tr from "../Base/Tr.svelte"
import { XCircleIcon } from "@rgossiaux/svelte-heroicons/solid"
import { ariaLabel } from "../../Utils/ariaLabel"
+ import { CloseButton } from "flowbite-svelte"
export let state: SpecialVisualizationState
export let layer: LayerConfig
@@ -72,14 +73,10 @@
{/if}
-
+
+ state.selectedElement.setData(undefined)}/>
+
+
diff --git a/src/UI/Favourites/FavouriteSummary.svelte b/src/UI/Favourites/FavouriteSummary.svelte
index 0c3286a44..e83af80e7 100644
--- a/src/UI/Favourites/FavouriteSummary.svelte
+++ b/src/UI/Favourites/FavouriteSummary.svelte
@@ -21,7 +21,7 @@
state.mapProperties.location.setData({ lon, lat })
const z = state.mapProperties.zoom.data
state.mapProperties.zoom.setData(Math.min(17, Math.max(12, z)))
- state.guistate.menuIsOpened.setData(false)
+ state.guistate.pageStates.menu.setData(false)
}
function select() {
diff --git a/src/UI/Image/ImageOperations.svelte b/src/UI/Image/ImageOperations.svelte
index 7d131e2e0..592ee7597 100644
--- a/src/UI/Image/ImageOperations.svelte
+++ b/src/UI/Image/ImageOperations.svelte
@@ -11,6 +11,8 @@
import { twMerge } from "tailwind-merge"
import { UIEventSource } from "../../Logic/UIEventSource"
import Loading from "../Base/Loading.svelte"
+ import Tr from "../Base/Tr.svelte"
+ import Translations from "../i18n/Translations"
export let image: ProvidedImage
export let clss: string = undefined
@@ -48,7 +50,7 @@
on:click={() => download()}
>
- Download
+
diff --git a/src/UI/ThemeViewGUI.svelte b/src/UI/ThemeViewGUI.svelte
index 355a59fac..fbf5a24ad 100644
--- a/src/UI/ThemeViewGUI.svelte
+++ b/src/UI/ThemeViewGUI.svelte
@@ -196,7 +196,7 @@
{console.log("Opening...."); state.guistate.menuIsOpened.setData(true)}}
+ on:click={() => {console.log("Opening...."); state.guistate.pageStates.menu.setData(true)}}
on:keydown={forwardEventToMap}
>
@@ -404,7 +404,7 @@
-
+