Skip to content

Commit 981b5db

Browse files
authored
changed share link copy to clipboard function (#60)
* changed logo click redirection * Update FavouriteDropdown.jsx
1 parent 0d31bdb commit 981b5db

1 file changed

Lines changed: 42 additions & 49 deletions

File tree

my-app/src/views/Components/FavouriteDropdown.jsx

Lines changed: 42 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,31 @@ import React, { useState } from 'react';
22
import { observer } from "mobx-react-lite";
33

44
const FavouritesDropdown = observer((props) => {
5-
const [showShareBox, setShowShareBox] = useState(false);
65
const [shareUrl, setShareUrl] = useState("");
6+
const [copied, setCopied] = useState(false);
7+
8+
9+
10+
711

812
function handleShareCourses() {
913
if (!props.favouriteCourses || props.favouriteCourses.length === 0) return;
10-
14+
1115
const courseCodes = props.favouriteCourses.map(course => course.code).join(",");
1216
const url = `${window.location.origin}/#/share?favs=${encodeURIComponent(courseCodes)}`;
13-
setShareUrl(url);
14-
setShowShareBox(true);
17+
18+
navigator.clipboard.writeText(url)
19+
.then(() => {
20+
setCopied(true);
21+
setTimeout(() => setCopied(false), 2500); // revert after 2.5 seconds
22+
})
23+
.catch(err => {
24+
console.error("Copy failed:", err);
25+
});
1526
}
27+
28+
29+
1630

1731
function handleCopy() {
1832
navigator.clipboard.writeText(shareUrl)
@@ -62,55 +76,34 @@ const FavouritesDropdown = observer((props) => {
6276
)}
6377
</div>
6478

65-
{/* Footer */}
66-
<div className="sticky bottom-0 border-t border-solid border-violet-400 bg-indigo-300/75 backdrop-blur-lg">
67-
<div className='p-3 flex justify-between items-center bg-violet-400/30'>
68-
<p className='text-slate-900 font-bold w-1/2'>Total:</p>
69-
<p className='text-slate-900 font-bold w-1/4'></p>
70-
<p className='text-slate-900 font-bold w-1/4 text-center'>{props.totalCredits} hp</p>
71-
<div className="w-8"></div>
72-
</div>
7379

74-
<div className="flex border-t border-solid border-violet-400">
75-
{props.favouriteCourses.length > 0 && (
76-
<>
77-
<button
78-
onClick={props.removeAllFavourites}
79-
className="w-1/2 p-3 cursor-pointer text-red-600 hover:bg-red-600 hover:text-white border-r border-solid border-violet-400 font-semibold transition-colors"
80-
>
81-
Clear All
82-
</button>
83-
<button
84-
onClick={handleShareCourses}
85-
className="w-1/2 p-3 cursor-pointer text-violet-700 hover:bg-blue-500 hover:text-white flex items-center justify-center gap-2 font-semibold"
86-
>
87-
Share Courses
88-
</button>
89-
</>
90-
)}
91-
</div>
92-
</div>
80+
<div className="flex border-t border-solid border-violet-400">
81+
{props.favouriteCourses.length > 0 && (
82+
<>
83+
<button
84+
onClick={props.removeAllFavourites}
85+
className="w-1/2 p-3 cursor-pointer text-red-600 hover:bg-red-600 hover:text-white border-r border-solid border-violet-400 font-semibold transition-colors"
86+
>
87+
Clear All
88+
</button>
89+
90+
<button
91+
onClick={handleShareCourses}
92+
className={`w-1/2 p-3 cursor-pointer ${
93+
copied ? "bg-violet-600 text-white" : "text-violet-700 hover:bg-blue-500 hover:text-white"
94+
} flex items-center justify-center gap-2 font-semibold transition-colors duration-300`}
95+
>
96+
{copied ? "Copied to Clipboard!" : "Share Courses"}
97+
</button>
9398

94-
{/* Floating share box */}
95-
{showShareBox && (
96-
<div className="fixed z-30 right-8 top-20 bg-white p-4 border border-gray-300 rounded-xl shadow-xl w-[320px]">
97-
<p className="text-sm break-words mb-2">{shareUrl}</p>
98-
<div className="flex justify-between items-center">
99-
<button
100-
onClick={handleCopy}
101-
className="bg-blue-600 text-white px-3 py-1 rounded hover:bg-blue-800 text-sm"
102-
>
103-
Copy to Clipboard
104-
</button>
105-
<button
106-
onClick={() => setShowShareBox(false)}
107-
className="text-gray-600 text-sm hover:underline"
108-
>
109-
Close
110-
</button>
99+
</>
100+
)}
111101
</div>
102+
112103
</div>
113-
)}
104+
</div>
105+
106+
114107

115108
{/* Optional course popup */}
116109
<div className="relative z-100">

0 commit comments

Comments
 (0)