Spaces:
Running
Running
| // Add ripple effect to checkboxes | |
| document.querySelectorAll('.checkbox-label').forEach(label => { | |
| label.addEventListener('click', (e) => { | |
| // Create ripple element | |
| const ripple = document.createElement('span'); | |
| ripple.classList.add('ripple-effect'); | |
| // Position the ripple | |
| const checkbox = label.querySelector('.checkbox-custom, .animated-checkbox, .icon-checkbox'); | |
| const rect = checkbox.getBoundingClientRect(); | |
| const size = Math.max(rect.width, rect.height); | |
| ripple.style.width = ripple.style.height = `${size}px`; | |
| ripple.style.left = `${e.clientX - rect.left - size/2}px`; | |
| ripple.style.top = `${e.clientY - rect.top - size/2}px`; | |
| // Add ripple to checkbox | |
| checkbox.appendChild(ripple); | |
| // Remove ripple after animation | |
| setTimeout(() => { | |
| ripple.remove(); | |
| }, 600); | |
| }); | |
| }); | |
| // Add keyboard navigation | |
| document.querySelectorAll('.checkbox-input').forEach(checkbox => { | |
| checkbox.addEventListener('keydown', (e) => { | |
| if (e.key === 'Enter' || e.key === ' ') { | |
| e.preventDefault(); | |
| checkbox.checked = !checkbox.checked; | |
| checkbox.dispatchEvent(new Event('change')); | |
| } | |
| }); | |
| }); |