From a6b6889ef3f033b36b7cefca4bbf5c489f8dd0c4 Mon Sep 17 00:00:00 2001
From: Dustin Carlino
Date: Fri, 15 Mar 2024 14:37:13 +0000
Subject: [PATCH] Move the layer controls to the sidebar
---
web/src/common/TopLeftPanel.svelte | 12 ----------
web/src/common/index.ts | 1 -
web/src/street-explorer/App.svelte | 36 +++++++++++++++++++++---------
3 files changed, 26 insertions(+), 23 deletions(-)
delete mode 100644 web/src/common/TopLeftPanel.svelte
diff --git a/web/src/common/TopLeftPanel.svelte b/web/src/common/TopLeftPanel.svelte
deleted file mode 100644
index ed7fa88a..00000000
--- a/web/src/common/TopLeftPanel.svelte
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
diff --git a/web/src/common/index.ts b/web/src/common/index.ts
index 5ee8ec8f..40a28f6d 100644
--- a/web/src/common/index.ts
+++ b/web/src/common/index.ts
@@ -3,5 +3,4 @@ export { default as Geocoder } from "./Geocoder.svelte";
export { default as Layout } from "./Layout.svelte";
export { default as Map } from "./Map.svelte";
export { default as ThemePicker } from "./ThemePicker.svelte";
-export { default as TopLeftPanel } from "./TopLeftPanel.svelte";
export * from "./store";
diff --git a/web/src/street-explorer/App.svelte b/web/src/street-explorer/App.svelte
index e98f61b1..4c393684 100644
--- a/web/src/street-explorer/App.svelte
+++ b/web/src/street-explorer/App.svelte
@@ -3,14 +3,7 @@
import init from "osm2streets-js";
import { onMount } from "svelte";
import AppSwitcher from "../AppSwitcher.svelte";
- import {
- ThemePicker,
- BasemapPicker,
- Geocoder,
- Layout,
- Map,
- TopLeftPanel,
- } from "../common";
+ import { ThemePicker, BasemapPicker, Geocoder, Layout, Map } from "../common";
import ImportControls from "../common/import/ImportControls.svelte";
import RenderBoundary from "../common/layers/RenderBoundary.svelte";
import RenderIntersectionMarkings from "../common/layers/RenderIntersectionMarkings.svelte";
@@ -27,6 +20,16 @@
onMount(async () => {
await init();
});
+
+ // Some of the layer contents need to be under the Map component for Svelte
+ // context to work, but the controls themselves should be in the
+ // sidebar. This trick moves the DOM node around.
+ let controlsContents: HTMLDivElement | null = null;
+ let controlsContainer: HTMLSpanElement;
+ $: if (controlsContents && controlsContainer) {
+ controlsContainer.innerHTML = "";
+ controlsContainer.appendChild(controlsContents);
+ }
@@ -40,13 +43,21 @@
>
and Muv.
+
+
+
+
+
+ Layers
+
+
@@ -88,4 +99,9 @@
max-height: 50vh;
max-width: 30vw;
}
+
+ details {
+ border: 1px solid black;
+ padding: 4px;
+ }