From c207fa596145623c5dfc8bb5e0fbccf23d651707 Mon Sep 17 00:00:00 2001
From: GitG0r0 <145980798+GitG0r0@users.noreply.github.com>
Date: Wed, 22 Oct 2025 19:35:08 +0200
Subject: [PATCH] =?UTF-8?q?feat(deck-creator):=20dropdown=20men=C3=BCk=20f?=
=?UTF-8?q?ejleszt=C3=A9se?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Típus és láthatóság dropdown menük átalakítása
- Ikonok hozzáadása mindkét dropdown menühöz
- Szöveg színek javítása a jobb láthatóságért
- Hover és kijelölési állapotok hozzáadása
- Dropdown menük egységes stílusának kialakítása
---
.../src/components/DeckCreator/DeckHeader.jsx | 135 +++++++++++++++---
1 file changed, 112 insertions(+), 23 deletions(-)
diff --git a/SerpentRace_Frontend/src/components/DeckCreator/DeckHeader.jsx b/SerpentRace_Frontend/src/components/DeckCreator/DeckHeader.jsx
index 2aaa8626..7ca4e98d 100644
--- a/SerpentRace_Frontend/src/components/DeckCreator/DeckHeader.jsx
+++ b/SerpentRace_Frontend/src/components/DeckCreator/DeckHeader.jsx
@@ -1,7 +1,7 @@
// src/components/DeckCreator/DeckHeader.jsx
// Deck alapadatok szerkesztése és mentés
-import React from "react"
+import React, { useState, useRef, useEffect } from "react"
import { FaSave, FaArrowLeft, FaGlobe, FaLock, FaQuestionCircle, FaDice, FaLaughBeam } from "react-icons/fa"
const deckTypes = [
@@ -16,9 +16,30 @@ const privacyOptions = [
]
export default function DeckHeader({ deck, onUpdate, onSave, onBack }) {
+ const [isTypeDropdownOpen, setIsTypeDropdownOpen] = useState(false);
+ const [isPrivacyDropdownOpen, setIsPrivacyDropdownOpen] = useState(false);
+ const typeDropdownRef = useRef(null);
+ const privacyDropdownRef = useRef(null);
+
const currentDeckType = deckTypes.find(type => type.value === deck.type) || deckTypes[0]
const currentPrivacy = privacyOptions.find(option => option.value === deck.privacy) || privacyOptions[0]
+ useEffect(() => {
+ function handleClickOutside(event) {
+ if (typeDropdownRef.current && !typeDropdownRef.current.contains(event.target)) {
+ setIsTypeDropdownOpen(false);
+ }
+ if (privacyDropdownRef.current && !privacyDropdownRef.current.contains(event.target)) {
+ setIsPrivacyDropdownOpen(false);
+ }
+ }
+
+ document.addEventListener('mousedown', handleClickOutside);
+ return () => {
+ document.removeEventListener('mousedown', handleClickOutside);
+ };
+ }, []);
+
const handleInputChange = (field, value) => {
onUpdate({ [field]: value })
}
@@ -80,17 +101,51 @@ export default function DeckHeader({ deck, onUpdate, onSave, onBack }) {
-
+
+
+
+ {isTypeDropdownOpen && (
+
+ {deckTypes.map(type => (
+
+ ))}
+
+ )}
+
{/* Privacy */}
@@ -98,17 +153,51 @@ export default function DeckHeader({ deck, onUpdate, onSave, onBack }) {
-
+
+
+
+ {isPrivacyDropdownOpen && (
+
+ {privacyOptions.map(option => (
+
+ ))}
+
+ )}
+
{/* Description */}