Skip to content

Commit 0da45cd

Browse files
committed
implement default MapToolbar & Legend
1 parent b2c946f commit 0da45cd

33 files changed

+485
-154
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import React from 'react';
2+
3+
export default function MapContainer({ children }) {
4+
const [mapTools, map] = React.children(children).toArray();
5+
return React.cloneElement(map, {}, [mapTools, ...map.props.children]);
6+
}

packages/leaflet/src/components/Legend.js renamed to packages/leaflet/src/components/MapToolbar.js

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,21 @@ import React from 'react';
22
import PropTypes from 'prop-types';
33
import { LayersControl } from 'react-leaflet';
44
const { BaseLayer, Overlay } = LayersControl;
5+
import { useComponents } from '@wq/react';
56

6-
export default function Legend({ position, collapsed, children }) {
7+
export default function MapToolbar({
8+
overlays,
9+
basemaps,
10+
context,
11+
position,
12+
collapsed
13+
}) {
14+
const {
15+
AutoBasemap,
16+
AutoOverlay,
17+
BasemapToggle,
18+
OverlayToggle
19+
} = useComponents();
720
if (!position) {
821
position = 'topright';
922
}
@@ -12,11 +25,31 @@ export default function Legend({ position, collapsed, children }) {
1225
}
1326
return (
1427
<LayersControl position={position} collapsed={collapsed}>
15-
{children}
28+
{basemaps.map(conf => (
29+
<BasemapToggle
30+
key={conf.name}
31+
name={conf.name}
32+
active={conf.active}
33+
>
34+
<AutoBasemap {...conf} />
35+
</BasemapToggle>
36+
))}
37+
{overlays.map(conf => (
38+
<OverlayToggle
39+
key={conf.name}
40+
name={conf.name}
41+
active={conf.active}
42+
>
43+
<AutoOverlay {...conf} context={context} />
44+
</OverlayToggle>
45+
))}
1646
</LayersControl>
1747
);
1848
}
19-
Legend.propTypes = {
49+
MapToolbar.propTypes = {
50+
overlays: PropTypes.arrayOf(PropTypes.object),
51+
basemaps: PropTypes.arrayOf(PropTypes.object),
52+
context: PropTypes.object,
2053
position: PropTypes.object,
2154
collapsed: PropTypes.bool,
2255
children: PropTypes.node
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
1+
import MapContainer from './MapContainer';
2+
import MapToolbar, { BasemapToggle, OverlayToggle } from './MapToolbar';
13
import Map from './Map';
24
import MapAutoZoom from './MapAutoZoom';
3-
import Legend, { BasemapToggle, OverlayToggle } from './Legend';
45

5-
export { Map, MapAutoZoom, Legend, BasemapToggle, OverlayToggle };
6+
export {
7+
MapContainer,
8+
MapToolbar,
9+
Map,
10+
MapAutoZoom,
11+
BasemapToggle,
12+
OverlayToggle
13+
};

packages/leaflet/src/index.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import map from '@wq/map';
22
import {
3+
MapContainer,
4+
MapToolbar,
35
Map,
46
MapAutoZoom,
5-
Legend,
67
BasemapToggle,
78
OverlayToggle
89
} from './components/index';
@@ -44,9 +45,11 @@ export default {
4445
}));
4546
},
4647
components: {
48+
MapContainer,
49+
MapToolbar,
4750
Map,
4851
MapAutoZoom,
49-
Legend,
52+
MapLayers: () => null,
5053
BasemapToggle,
5154
OverlayToggle
5255
},
@@ -74,8 +77,9 @@ export default {
7477
};
7578

7679
export {
80+
MapContainer,
81+
MapToolbar,
7782
Map,
78-
Legend,
7983
BasemapToggle,
8084
OverlayToggle,
8185
Tile,

packages/map-gl/src/components/BasemapToggle.js

Lines changed: 0 additions & 14 deletions
This file was deleted.

packages/map-gl/src/components/Legend.js

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { Fragment } from 'react';
2+
3+
export default Fragment;

packages/map-gl/src/components/OverlayToggle.js

Lines changed: 0 additions & 10 deletions
This file was deleted.
Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,7 @@
1-
import BasemapToggle from './BasemapToggle';
2-
import Legend from './Legend';
31
import Map from './Map';
42
import MapInteraction from './MapInteraction';
53
import MapAutoZoom from './MapAutoZoom';
64
import MapIdentify from './MapIdentify';
7-
import OverlayToggle from './OverlayToggle';
5+
import MapLayers from './MapLayers';
86

9-
export {
10-
BasemapToggle,
11-
Legend,
12-
Map,
13-
MapInteraction,
14-
MapAutoZoom,
15-
MapIdentify,
16-
OverlayToggle
17-
};
7+
export { Map, MapInteraction, MapAutoZoom, MapIdentify, MapLayers };

packages/map-gl/src/index.js

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ import {
55
MapInteraction,
66
MapAutoZoom,
77
MapIdentify,
8-
Legend,
9-
BasemapToggle,
10-
OverlayToggle
8+
MapLayers
119
} from './components/index';
1210

1311
import { VectorTile, Tile } from './basemaps/index';
@@ -31,9 +29,7 @@ export default {
3129
MapInteraction,
3230
MapAutoZoom,
3331
MapIdentify,
34-
Legend,
35-
BasemapToggle,
36-
OverlayToggle
32+
MapLayers
3733
},
3834
basemaps: {
3935
VectorTile,
@@ -55,9 +51,6 @@ export {
5551
MapInteraction,
5652
MapAutoZoom,
5753
MapIdentify,
58-
Legend,
59-
BasemapToggle,
60-
OverlayToggle,
6154
VectorTile,
6255
Tile,
6356
Geojson,

0 commit comments

Comments
 (0)