diff --git a/example/MapComponent.jsx b/example/MapComponent.jsx index 8163296..44d1830 100644 --- a/example/MapComponent.jsx +++ b/example/MapComponent.jsx @@ -1,15 +1,16 @@ // development -import TurkeyMap from './../src/TurkeyMap' +import TurkeyMap from "./../src/TurkeyMap"; // build test // import TurkeyMap from './../build/TurkeyMap' // npm test // import TurkeyMap from 'react-turkey-map' -export default ({ colorData, tooltipData }) => { +export default ({ colorData, tooltipData, onClick }) => { return ( - ) -} + ); +}; diff --git a/example/index.jsx b/example/index.jsx index ad6c053..2cd0890 100644 --- a/example/index.jsx +++ b/example/index.jsx @@ -1,29 +1,30 @@ /** @jsxImportSource @emotion/react */ -import { useState } from 'react' -import { createRoot } from 'react-dom/client' +import { useState } from "react"; +import { createRoot } from "react-dom/client"; -import styles from './styles' -import Buttons from './Buttons' -import MapComponent from './MapComponent' +import styles from "./styles"; +import Buttons from "./Buttons"; +import MapComponent from "./MapComponent"; const App = () => { - const [colorData, setColorData] = useState({}) - const [tooltipData, setTooltipData] = useState({}) + const [colorData, setColorData] = useState({}); + const [tooltipData, setTooltipData] = useState({}); + + const handleOnClick = (city, plate) => { + console.log(`City: ${city}, Plate: ${plate}`); + }; return (
- +
- ) -} + ); +}; -createRoot(document.getElementById('app')) - .render() +createRoot(document.getElementById("app")).render(); diff --git a/package-lock.json b/package-lock.json index d988e9b..0049f40 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "react-turkey-map", - "version": "1.0.11", + "version": "1.0.19", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "react-turkey-map", - "version": "1.0.11", + "version": "1.0.19", "license": "MIT", "devDependencies": { "@babel/core": "^7.24.6", diff --git a/src/TurkeyMap.jsx b/src/TurkeyMap.jsx index 250f79d..da4f364 100644 --- a/src/TurkeyMap.jsx +++ b/src/TurkeyMap.jsx @@ -1,46 +1,56 @@ /** @jsxImportSource @emotion/react */ -import React, { useState } from 'react' +import { useState } from "react"; -import cities from './cities' -import styles from './styles' +import cities from "./cities"; +import styles from "./styles"; -export default ({ colorData: _colorData, showTooltip: _showTooltip, tooltipData: _tooltipData }) => { - const colorData = _colorData || {} - const showTooltip = _showTooltip !== undefined ? _showTooltip : true - const tooltipData = _tooltipData || {} +export default ({ + colorData: _colorData, + showTooltip: _showTooltip, + tooltipData: _tooltipData, + onClick: _onClick, +}) => { + const colorData = _colorData || {}; + const showTooltip = _showTooltip !== undefined ? _showTooltip : true; + const tooltipData = _tooltipData || {}; + const onClick = _onClick; - const [tooltip, setTooltip] = useState('') - const [position, setPosition] = useState({ top: 0, left: 0 }) + const [tooltip, setTooltip] = useState(""); + const [position, setPosition] = useState({ top: 0, left: 0 }); - const handleMouseOver = event => { - if (event.target.tagName === 'path') { - const city = event.target.parentNode.getAttribute('data-city') - const plate = event.target.parentNode.getAttribute('data-plate') + const handleMouseOver = (event) => { + if (event.target.tagName === "path") { + const city = event.target.parentNode.getAttribute("data-city"); + const plate = event.target.parentNode.getAttribute("data-plate"); const TooltipComponent = (
- {city}{tooltipData[plate] ? `: ${tooltipData[plate]}` : ''} + {city} + {tooltipData[plate] ? `: ${tooltipData[plate]}` : ""}
- ) - setTooltip(TooltipComponent) + ); + setTooltip(TooltipComponent); } - } + }; - const handleMouseMove = event => { - setPosition({ top: event.pageY + 25, left: event.pageX }) - } + const handleMouseMove = (event) => { + setPosition({ top: event.pageY + 25, left: event.pageX }); + }; const handleMouseOut = () => { - setTooltip('') - } + setTooltip(""); + }; - const handleClick = event => { - if (event.target.tagName === 'path') { - const parent = event.target.parentNode - const city = parent.getAttribute('data-city') - const plate = parent.getAttribute('data-plate') - console.log({ city, plate }) + const handleClick = (event) => { + if (event.target.tagName === "path") { + const parent = event.target.parentNode; + const city = parent.getAttribute("data-city"); + const plate = parent.getAttribute("data-plate"); + + if (onClick) { + onClick(city, plate); + } } - } + }; return (
@@ -53,48 +63,39 @@ export default ({ colorData: _colorData, showTooltip: _showTooltip, tooltipData:
- { - cities.map((city, key) => { - return ( - - { - colorData[city.plate] - ? ( - - ) - : ( - - ) - } - - ) - }) - } + {cities.map((city, key) => { + return ( + + {colorData[city.plate] ? ( + + ) : ( + + )} + + ); + })}
- ) -} + ); +};