Skip to content
Snippets Groups Projects
Unverified Commit 5a13a75b authored by tribut's avatar tribut :man_dancing:
Browse files

Animate hamburger menu

parent d2de4418
No related branches found
No related tags found
No related merge requests found
...@@ -4,7 +4,17 @@ export default class extends Controller { ...@@ -4,7 +4,17 @@ export default class extends Controller {
static targets = [ "mobileMenu" ]; static targets = [ "mobileMenu" ];
toggleMenu() { toggleMenu() {
this.mobileMenuTarget.classList.toggle("hidden"); const menu = this.mobileMenuTarget;
if (menu.classList.contains('hidden')) {
menu.classList.remove('hidden');
menu.classList.remove('motion-safe:animate-slideOut');
menu.classList.add('motion-safe:animate-slideIn');
} else {
menu.classList.remove('motion-safe:animate-slideIn');
menu.classList.add('motion-safe:animate-slideOut');
setTimeout(() => { menu.classList.add('hidden'); },
window.matchMedia("(prefers-reduced-motion: reduce)").matches ?
0 : 300); // Should match the duration in tailwind.config.js
}
} }
} }
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
</head> </head>
<body <%= tag.attributes(body_data_attributes) %>> <body <%= tag.attributes(body_data_attributes) %>>
<nav class="bg-slate-100 text-gray-700 shadow" data-controller="navigation"> <nav class="bg-slate-100 text-gray-700 shadow relative" data-controller="navigation">
<div class="container mx-auto px-4 py-4 flex justify-between items-center"> <div class="relative bg-slate-100 z-50 container mx-auto px-4 py-4 flex justify-between items-center">
<div class="flex items-center space-x-4"> <div class="flex items-center space-x-4">
<h1 class="text-xl font-bold text-black"><%= link_to 're:scheduled', '/', class: "!no-underline" %></h1> <h1 class="text-xl font-bold text-black"><%= link_to 're:scheduled', '/', class: "!no-underline" %></h1>
<div class="hidden md:flex space-x-4"> <div class="hidden md:flex space-x-4">
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
</button> </button>
</div> </div>
</div> </div>
<div id="mobile-menu" class="container mx-auto hidden md:hidden space-y-4 px-8 pb-4" data-navigation-target="mobileMenu"> <div id="mobile-menu" class="absolute top-18 bg-slate-100 z-20 container mx-auto hidden md:hidden space-y-4 px-8 pb-4 shadow" data-navigation-target="mobileMenu">
<%= link_to 'Conferences', conferences_path, class: 'block hover:text-gray-900' %> <%= link_to 'Conferences', conferences_path, class: 'block hover:text-gray-900' %>
<%= link_to 'Assignments', assignments_path, class: 'block hover:text-gray-900' %> <%= link_to 'Assignments', assignments_path, class: 'block hover:text-gray-900' %>
<hr> <hr>
......
...@@ -9,6 +9,20 @@ module.exports = { ...@@ -9,6 +9,20 @@ module.exports = {
], ],
theme: { theme: {
extend: { extend: {
keyframes: {
slideIn: {
'0%': { transform: 'translateY(-105%)' },
'100%': { transform: 'translateY(0)' },
},
slideOut: {
'0%': { transform: 'translateY(0)' },
'100%': { transform: 'translateY(-105%)' },
},
},
animation: {
slideIn: 'slideIn 0.3s ease-in forwards',
slideOut: 'slideOut 0.3s ease-in forwards',
},
fontFamily: { fontFamily: {
sans: ['Inter var', ...defaultTheme.fontFamily.sans], sans: ['Inter var', ...defaultTheme.fontFamily.sans],
}, },
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment