-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNavbar.js
More file actions
76 lines (66 loc) · 2.04 KB
/
Copy pathNavbar.js
File metadata and controls
76 lines (66 loc) · 2.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import Container from "react-bootstrap/Container";
import Nav from "react-bootstrap/Nav";
import Navbar from "react-bootstrap/Navbar";
import "./Navbar.css";
import items from "./items";
const navLinkAnimation = (e) => {
const currentChild = e.target.childNodes[0];
const originalHeader = currentChild.dataset.original;
if (originalHeader === "Login") return;
const getRandomCharacter = () => {
const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
return characters[Math.floor(Math.random() * 26)];
};
let start = 0;
const interval = setInterval(() => {
try {
currentChild.innerText = currentChild.innerText
.split("")
.map((letter, index) => {
if (index < start) return originalHeader[index];
else if (index < 1) return getRandomCharacter();
else return getRandomCharacter().toLowerCase();
})
.join("");
if (start >= originalHeader.length) {
clearInterval(interval);
currentChild.innerText = originalHeader;
}
start += 1 / 2;
} catch (e) {
currentChild.innerText = originalHeader;
}
}, 30);
};
const returnLinkAnimation = (e) => {
try {
const currentChild = e.target.childNodes[0];
currentChild.innerText = currentChild.dataset.original;
} catch (e) {}
};
const NavigationMenu = () => {
return (
<Navbar collapseOnSelect expand="lg">
<Container>
<Navbar.Brand href="/acm-css-website">pecacm</Navbar.Brand>
<Navbar.Toggle aria-controls="responsive-navbar-nav" />
<Navbar.Collapse id="responsive-navbar-nav">
<Nav className="me-auto"></Nav>
<Nav>
{items.map((item, key) => (
<Nav.Link
href={item.props.to}
key={key}
onMouseEnter={navLinkAnimation}
onMouseLeave={returnLinkAnimation}
>
{item}
</Nav.Link>
))}
</Nav>
</Navbar.Collapse>
</Container>
</Navbar>
);
};
export default NavigationMenu;