Spaces:
Sleeping
Sleeping
File size: 3,047 Bytes
102fe5c | 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 77 78 | document.addEventListener('DOMContentLoaded', function() {
// Initialize tooltips
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'));
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl);
});
// Add fade-in animation to main content
document.querySelector('main').classList.add('fade-in');
// Password visibility toggle
const togglePasswordButtons = document.querySelectorAll('.toggle-password');
if (togglePasswordButtons) {
togglePasswordButtons.forEach(button => {
button.addEventListener('click', function() {
const passwordInput = document.querySelector(this.getAttribute('data-target'));
const type = passwordInput.getAttribute('type') === 'password' ? 'text' : 'password';
passwordInput.setAttribute('type', type);
// Toggle icon
this.querySelector('i').classList.toggle('fa-eye');
this.querySelector('i').classList.toggle('fa-eye-slash');
});
});
}
// Confirm delete prompts
const deleteButtons = document.querySelectorAll('.btn-delete');
if (deleteButtons) {
deleteButtons.forEach(button => {
button.addEventListener('click', function(e) {
if (!confirm('Are you sure you want to delete this item? This action cannot be undone.')) {
e.preventDefault();
}
});
});
}
// Table row highlight on hover
const tableRows = document.querySelectorAll('tbody tr');
if (tableRows) {
tableRows.forEach(row => {
row.addEventListener('mouseenter', function() {
this.classList.add('highlight');
});
row.addEventListener('mouseleave', function() {
this.classList.remove('highlight');
});
});
}
// Search input focus effect
const searchInputs = document.querySelectorAll('input[type="search"], input[name="search"]');
if (searchInputs) {
searchInputs.forEach(input => {
input.addEventListener('focus', function() {
this.parentElement.classList.add('search-focus');
});
input.addEventListener('blur', function() {
this.parentElement.classList.remove('search-focus');
});
});
}
// Form validation
const forms = document.querySelectorAll('.needs-validation');
if (forms) {
Array.from(forms).forEach(form => {
form.addEventListener('submit', event => {
if (!form.checkValidity()) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}
}); |