diff --git a/frontend/src/components/profile/scoring/FormatSettings.jsx b/frontend/src/components/profile/scoring/FormatSettings.jsx index 4cdae4b..e4a5748 100644 --- a/frontend/src/components/profile/scoring/FormatSettings.jsx +++ b/frontend/src/components/profile/scoring/FormatSettings.jsx @@ -141,14 +141,14 @@ const FormatSettings = ({ formats, onScoreChange, onFormatToggle, activeApp }) = // Pre-compile matching patterns for better performance const matchers = { - 'Audio': (tag) => /audio|atmos|dts|truehd|flac|aac/i.test(tag), - 'HDR': (tag) => /hdr|dv|dolby|vision/i.test(tag), + 'Audio': (tag) => /audio/i.test(tag), + 'HDR': (tag) => /hdr/i.test(tag), 'Release Groups': (tag) => /group/i.test(tag) && !/tier/i.test(tag), - 'Streaming Services': (tag) => /streaming|netflix|amazon|hulu|disney|apple|peacock|hbo|paramount/i.test(tag), - 'Codecs': (tag) => /codec|x264|x265|h264|h265|av1/i.test(tag), + 'Streaming Services': (tag) => /streaming/i.test(tag), + 'Codecs': (tag) => /codec/i.test(tag), 'Resolution': (tag) => /resolution/i.test(tag), 'Source': (tag) => /source/i.test(tag), - 'Storage': (tag) => /storage|size/i.test(tag), + 'Storage': (tag) => /storage/i.test(tag), 'Release Group Tiers': (tag) => /tier/i.test(tag), 'Indexer Flags': (tag) => /indexer|flag/i.test(tag) }; diff --git a/frontend/src/components/profile/scoring/GroupFilter.jsx b/frontend/src/components/profile/scoring/GroupFilter.jsx index b35594a..36a7282 100644 --- a/frontend/src/components/profile/scoring/GroupFilter.jsx +++ b/frontend/src/components/profile/scoring/GroupFilter.jsx @@ -3,10 +3,8 @@ import PropTypes from 'prop-types'; import { Check, Plus, X, Volume2, Monitor, Users, Tv, Code, HardDrive, Tag, Square, Layers, Database } from 'lucide-react'; const GroupFilter = memo(({ onGroupChange }) => { - const [isOpen, setIsOpen] = useState(false); const [newTagInput, setNewTagInput] = useState(''); const dropdownRef = useRef(null); - const buttonRef = useRef(null); // Initialize from localStorage immediately const [selectedGroups, setSelectedGroups] = useState(() => { @@ -35,20 +33,6 @@ const GroupFilter = memo(({ onGroupChange }) => { ]; - // Handle click outside - useEffect(() => { - const handleClickOutside = (event) => { - if (dropdownRef.current && !dropdownRef.current.contains(event.target) && - buttonRef.current && !buttonRef.current.contains(event.target)) { - setIsOpen(false); - } - }; - - if (isOpen) { - document.addEventListener('mousedown', handleClickOutside); - return () => document.removeEventListener('mousedown', handleClickOutside); - } - }, [isOpen]); // Dispatch changes useEffect(() => { @@ -122,8 +106,6 @@ const GroupFilter = memo(({ onGroupChange }) => { return (
{/* Invisible bridge to maintain hover connection */} -
+
- {/* Dropdown - Uses CSS hover instead of JS events */} -
+ {/* Dropdown - Pure CSS hover */} +
{/* Extended invisible bridge inside dropdown */}