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 */}