Projekt

Obecné

Profil

Stáhnout (2.58 KB) Statistiky
| Větev: | Tag: | Revize:
1
import { LeafletMouseEvent } from 'leaflet'
2
import { Fragment, useCallback, useState } from 'react'
3
import { Popup, useMap, useMapEvents } from 'react-leaflet'
4

    
5
import * as React from 'react'
6
import Divider from '@mui/material/Divider'
7
import Paper from '@mui/material/Paper'
8
import MenuList from '@mui/material/MenuList'
9
import MenuItem from '@mui/material/MenuItem'
10
import ListItemText from '@mui/material/ListItemText'
11
import ListItemIcon from '@mui/material/ListItemIcon'
12
import Typography from '@mui/material/Typography'
13
import ContentCut from '@mui/icons-material/ContentCut'
14
import ContentCopy from '@mui/icons-material/ContentCopy'
15
import ContentPaste from '@mui/icons-material/ContentPaste'
16
import Cloud from '@mui/icons-material/Cloud'
17
import { Button, Stack, ThemeProvider } from '@mui/material'
18
import AddFromCoordinatesDialog from './AddFromCoordinatesDialog'
19
import { useSelector } from 'react-redux'
20
import { RootState } from '../../redux/store'
21
import { buildTheme } from '../../Theme/ThemeWrapper'
22
import ImportLocationDialog from './ImportLocationDialog'
23

    
24
const RightClickPopupMenu = () => {
25
    const [open, setOpen] = useState(false)
26
    const [latLng, setLatLng] = useState<[number, number]>([0, 0])
27

    
28
    const paletteMode = useSelector(
29
        (state: RootState) => state.theme.paletteMode
30
    )
31

    
32
    useMapEvents({
33
        contextmenu: (e: LeafletMouseEvent) => {
34
            setLatLng([e.latlng.lat, e.latlng.lng])
35
            setOpen(true)
36
        },
37
    })
38

    
39
    const closeContextMenu = useCallback(() => {
40
        setOpen(false)
41
    }, [setOpen])
42

    
43
    return (
44
        <Fragment>
45
            {open && (
46
                <Popup onClose={() => setOpen(false)} position={latLng}>
47
                    <Stack
48
                        sx={{ p: 0, mt: 0 }}
49
                        direction="column"
50
                        justifyItems="center"
51
                        justifyContent="center"
52
                    >
53
                        <Typography style={{margin: 0}} sx={{ mb: 0.5 }} align="center">
54
                            {latLng[0].toFixed(5)}°{latLng[1].toFixed(5)}°
55
                        </Typography>
56
                        <AddFromCoordinatesDialog
57
                            latLng={latLng}
58
                            closeContextMenu={closeContextMenu}
59
                        />
60
                        <ImportLocationDialog
61
                            latLng={latLng}
62
                            closeContextMenu={closeContextMenu}
63
                        />
64
                    </Stack>
65
                </Popup>
66
            )}
67
        </Fragment>
68
    )
69
}
70

    
71
export default RightClickPopupMenu
(2-2/4)