Skip to content

Commit 7ca7f3e

Browse files
author
Beyzanur Seyhan
committed
fix: fixed dropwdown menu stays open
1 parent 8430119 commit 7ca7f3e

File tree

1 file changed

+32
-25
lines changed

1 file changed

+32
-25
lines changed

components/Sort.tsx

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { faCode } from '@fortawesome/free-solid-svg-icons';
66
import { faArrowUpAZ } from '@fortawesome/free-solid-svg-icons';
77
import sortByName from 'utils/sortByName';
88
import Button from './Button';
9+
import { useState } from 'react';
910

1011
const { mainLanguages } = languages;
1112

@@ -22,6 +23,7 @@ enum SortTypes {
2223

2324
export default function Sort() {
2425
const router = useRouter();
26+
const [isDisplay, setIsDisplay] = useState<boolean>(false);
2527

2628
const navigationItems = [
2729
{
@@ -75,27 +77,26 @@ export default function Sort() {
7577
return SortTypes.BestMatch;
7678
}
7779
};
78-
79-
const handleClick = () => {
80-
const elem = document.activeElement as HTMLElement;
81-
if (elem) {
82-
elem?.blur();
83-
}
84-
};
8580
return (
8681
<div className="flex justify-center items-center mb-8 flex-col gap-2">
8782
<div className="dropdown dropdown-hover">
88-
<Button tabIndex={0} className="m-1 py-2">
89-
<FontAwesomeIcon
90-
icon={faCode}
91-
className=" w-6 h-6 mr-3"
92-
></FontAwesomeIcon>
93-
Language
94-
</Button>
95-
<div className="h-64 p-2 overflow-y-scroll shadow dropdown-content z-50 bg-base-100 rounded-box w-60">
83+
<div onClick={() => setIsDisplay(true)}>
84+
<Button tabIndex={0} className="m-1 py-2">
85+
<FontAwesomeIcon
86+
icon={faCode}
87+
className=" w-6 h-6 mr-3"
88+
></FontAwesomeIcon>
89+
Language
90+
</Button>
91+
</div>
92+
<div
93+
className={`h-64 p-2 overflow-y-scroll shadow dropdown-content z-50 bg-base-100 rounded-box w-60 ${
94+
!isDisplay && 'hidden'
95+
}`}
96+
>
9697
<ul tabIndex={0} className="menu menu-vertical">
9798
{mainLanguages.sort(sortByName).map(language => (
98-
<li key={language} onClick={handleClick}>
99+
<li key={language} onClick={() => setIsDisplay(false)}>
99100
<Link href={`/repos/${language.toLowerCase()}`}>
100101
{language}
101102
</Link>
@@ -105,17 +106,23 @@ export default function Sort() {
105106
</div>
106107
</div>
107108
<div className="dropdown dropdown-hover">
108-
<Button tabIndex={0} className="py-2">
109-
<FontAwesomeIcon
110-
icon={faArrowUpAZ}
111-
className=" w-6 h-6 mr-3"
112-
></FontAwesomeIcon>
113-
{selectedSort()}
114-
</Button>
115-
<div className="h-64 p-2 z-50 overflow-y-scroll shadow dropdown-content bg-base-100 rounded-box w-60">
109+
<div onClick={() => setIsDisplay(true)}>
110+
<Button tabIndex={0} className="py-2">
111+
<FontAwesomeIcon
112+
icon={faArrowUpAZ}
113+
className=" w-6 h-6 mr-3"
114+
></FontAwesomeIcon>
115+
{selectedSort()}
116+
</Button>
117+
</div>
118+
<div
119+
className={`h-64 p-2 z-50 overflow-y-scroll shadow dropdown-content bg-base-100 rounded-box w-60 ${
120+
!isDisplay && 'hidden'
121+
}`}
122+
>
116123
<ul tabIndex={0} className="menu menu-vertical">
117124
{navigationItems.map((item, index) => (
118-
<li key={index} onClick={handleClick}>
125+
<li key={index} onClick={() => setIsDisplay(false)}>
119126
<Link href={{ query: item.href.query }}>{item.name}</Link>
120127
</li>
121128
))}

0 commit comments

Comments
 (0)