Skip to content

Commit c398d65

Browse files
committed
增加扩展组件
1 parent 1ffdf59 commit c398d65

File tree

4 files changed

+87
-6
lines changed

4 files changed

+87
-6
lines changed

geojson-editor/src/App.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88
</template>
99

1010
<script setup lang="ts">
11-
import { Component, createApp, ref, watch } from 'vue';
11+
import { Component, createApp, h, ref, watch } from 'vue';
1212
import Map from '../../packages/maplugin-maplibre/demo/Map.vue';
1313
import Drawer from './components/features/Drawer.vue';
1414
import Measurer from './components/features/Measurer.vue';
1515
import FeatureCollectionEditor from './components/features/FeatureCollectionEditor.vue';
1616
import ShowEditorButton from './components/features/ShowEditorButton.vue';
1717
import IO from './components/features/IO.vue';
18+
import ExtendPannel from './components/base/ExtendPannel.vue';
1819
1920
import { DrawManager, GeoJSONLayerManager, MeasureManager, TIdentityGeoJSONFeature, MiddleButtonRoate, VertexEditor, useCamera } from '../../packages/maplugin-maplibre';
2021
import { StoreEditor } from './stores';
@@ -47,7 +48,7 @@ function handleMapLoaded(map: maplibregl.Map) {
4748
if (lng && lat) map.setCenter([lng, lat]);
4849
if (bearing) map.setBearing(bearing);
4950
if (pitch) map.setPitch(pitch);
50-
}else{
51+
} else {
5152
map.setCenter([121, 31]);
5253
map.setZoom(8);
5354
}
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
<template>
2+
<div class="extend-pannel">
3+
<ToggleButton :content="title" :default-active="defaultActive" :onToggle="onToggleWrap"></ToggleButton>
4+
<div :class="extendPannelContentClass">
5+
<slot></slot>
6+
</div>
7+
</div>
8+
</template>
9+
10+
<script setup lang="ts">
11+
import { computed, ref } from 'vue';
12+
import ToggleButton from './ToggleButton.vue';
13+
14+
const props = withDefaults(defineProps<{
15+
title: string,
16+
defaultActive?: boolean,
17+
onToggle?: (active: boolean) => void,
18+
position: "top-left" | "top-right" | "bottom-left" | "bottom-right"
19+
}>(), {
20+
defaultActive: false
21+
});
22+
23+
const activeRef = ref(props.defaultActive);
24+
const extendPannelContentClass = computed(() => {
25+
let ret = `extend-pannel-content ${props.position}`;
26+
if (activeRef.value) {
27+
ret += " active";
28+
}
29+
30+
return ret;
31+
});
32+
function onToggleWrap(active: boolean) {
33+
props.onToggle?.(active);
34+
activeRef.value = active;
35+
}
36+
</script>
37+
38+
<style scoped>
39+
.extend-pannel {
40+
position: relative;
41+
}
42+
43+
.extend-pannel-content {
44+
position: absolute;
45+
background-color: var(--color-bg);
46+
padding: 8px;
47+
border-radius: 6px;
48+
opacity: 0;
49+
transition: opacity 0.2s ease-in-out;
50+
51+
}
52+
53+
.extend-pannel-content.active {
54+
opacity: 1;
55+
}
56+
57+
.top-left {
58+
top: 0;
59+
right: 0;
60+
transform: translateX(calc(100% + 8px));
61+
}
62+
63+
.top-right {
64+
top: 0;
65+
left: 0;
66+
transform: translateX(calc(-100% - 8px));
67+
}
68+
69+
.bottom-left {
70+
bottom: 0;
71+
right: 0;
72+
transform: translateX(calc(100% + 8px));
73+
}
74+
75+
.bottom-right {
76+
bottom: 0;
77+
left: 0;
78+
transform: translateX(calc(-100% - 8px));
79+
}
80+
</style>

geojson-editor/src/components/base/ToggleButton.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ import { ref } from 'vue';
88
const props = defineProps<{
99
content: string,
1010
defaultActive: boolean,
11-
onChange: (val: boolean) => void
11+
onToggle: (val: boolean) => void
1212
}>();
1313
1414
const active = ref(props.defaultActive);
1515
16-
function handleClick(v: boolean) {
17-
props.onChange(!active.value);
16+
function handleClick() {
17+
props.onToggle(!active.value);
1818
active.value = !active.value;
1919
}
2020
</script>

geojson-editor/src/components/features/ShowEditorButton.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<ToggleButton content="编辑器" :defaultActive="StoreEditor.show.value" :onChange="v => StoreEditor.showEditor(v)">
2+
<ToggleButton content="编辑器" :defaultActive="StoreEditor.show.value" :onToggle="v => StoreEditor.showEditor(v)">
33
</ToggleButton>
44
</template>
55

0 commit comments

Comments
 (0)