1 | import React, { useState } from "react";
|
---|
2 | import styles from "./Maps.module.css";
|
---|
3 | import "react-tiles-dnd/esm/index.css";
|
---|
4 | import { TilesContainer } from "react-tiles-dnd";
|
---|
5 | import { Link } from "react-router-dom";
|
---|
6 | import card from "../../assets/card-map.png";
|
---|
7 |
|
---|
8 | const initialTiles = [
|
---|
9 | { text: "FINKI", cols: 1, rows: 1 },
|
---|
10 | { text: "TMF", cols: 1, rows: 1 },
|
---|
11 | { text: "HOSPITAL", cols: 1, rows: 1 },
|
---|
12 | { text: "POLICE", cols: 1, rows: 1 },
|
---|
13 | { text: "LIBRARY", cols: 1, rows: 1 },
|
---|
14 | { text: "PENTAGON", cols: 1, rows: 1 },
|
---|
15 | { text: "WHITE HOUSE", cols: 1, rows: 1 },
|
---|
16 | { text: "HOME", cols: 1, rows: 1 },
|
---|
17 | { text: "PRESPATEKS", cols: 1, rows: 1 },
|
---|
18 | ];
|
---|
19 |
|
---|
20 | const renderTile = ({ data, isDragging }) => (
|
---|
21 | <div style={{ padding: "1rem", width: "100%" }}>
|
---|
22 | <Link to="/Maps/FinkiMaps/View" className={styles.linkStyle}>
|
---|
23 | <div
|
---|
24 | className={`${styles.tile} ${isDragging ? styles.dragging : ""}`}
|
---|
25 | style={{ width: "100%", height: "100%" }}
|
---|
26 | >
|
---|
27 | <img src={card} className={styles.imgStyle} alt="Map Thumbnail" />
|
---|
28 | <div>
|
---|
29 | {data.text} {isDragging ? "DRAGGING" : null}
|
---|
30 | </div>
|
---|
31 | </div>
|
---|
32 | </Link>
|
---|
33 | </div>
|
---|
34 | );
|
---|
35 |
|
---|
36 | const tileSize = (tile) => ({
|
---|
37 | colSpan: tile.cols,
|
---|
38 | rowSpan: tile.rows,
|
---|
39 | });
|
---|
40 |
|
---|
41 | export default function Maps() {
|
---|
42 | const [searchTerm, setSearchTerm] = useState("");
|
---|
43 | const [tiles, setTiles] = useState(initialTiles);
|
---|
44 |
|
---|
45 | const handleSearchChange = (e) => {
|
---|
46 | const value = e.target.value.toLowerCase();
|
---|
47 | setSearchTerm(value);
|
---|
48 |
|
---|
49 | setTiles(initialTiles.filter((tile) => tile.text.toLowerCase().includes(value)));
|
---|
50 | };
|
---|
51 |
|
---|
52 | return (
|
---|
53 | <div className={styles.container}>
|
---|
54 | <h1>Explore Maps</h1>
|
---|
55 |
|
---|
56 | <div className={styles.searchBar}>
|
---|
57 | <input
|
---|
58 | type="text"
|
---|
59 | placeholder="Search for maps..."
|
---|
60 | value={searchTerm}
|
---|
61 | onChange={handleSearchChange}
|
---|
62 | />
|
---|
63 | </div>
|
---|
64 |
|
---|
65 | <TilesContainer
|
---|
66 | data={tiles}
|
---|
67 | renderTile={renderTile}
|
---|
68 | tileSize={tileSize}
|
---|
69 | forceTileWidth={150}
|
---|
70 | forceTileHeight={170}
|
---|
71 | />
|
---|
72 | </div>
|
---|
73 | );
|
---|
74 | }
|
---|