Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

top-navigation.js 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. document.addEventListener('DOMContentLoaded', () => {
  2. for (const dropdown of document.querySelectorAll('.fi-topbar-dropdown, .fi-topbar-dropdown .fi-dropdown-trigger')) {
  3. const observer = new MutationObserver((mutations) => {
  4. for (const { attributeName } of mutations) {
  5. if (attributeName === 'aria-expanded') {
  6. updateBorder(dropdown);
  7. }
  8. }
  9. });
  10. observer.observe(dropdown, { attributes: true });
  11. }
  12. document.querySelectorAll('.fi-topbar-item > a').forEach(item => {
  13. item.addEventListener('mouseenter', () => updateBorderOnHover(true, item));
  14. item.addEventListener('mouseleave', () => updateBorderOnHover(false, item));
  15. });
  16. insertBgDiv();
  17. handleTopbarAndSidebarHover();
  18. });
  19. const updateBorder = (dropdown) => {
  20. const activeItem = document.querySelector('.fi-topbar-item-active > *');
  21. const hoveredItem = dropdown.querySelector('.fi-topbar-item > *');
  22. if (activeItem && hoveredItem !== activeItem) {
  23. activeItem.style.borderBottomColor = dropdown.getAttribute('aria-expanded') === 'true' ? 'transparent' : '';
  24. }
  25. };
  26. const updateBorderOnHover = (isHovered, hoveredItem) => {
  27. const activeItem = document.querySelector('.fi-topbar-item-active > *');
  28. if (activeItem && hoveredItem !== activeItem) {
  29. activeItem.style.borderBottomColor = isHovered ? 'transparent' : '';
  30. }
  31. };
  32. const insertBgDiv = () => {
  33. document.querySelectorAll('a.fi-topbar-dropdown-list-item').forEach(anchor => {
  34. anchor.insertAdjacentHTML('beforeend', '<div class="bg"></div>');
  35. });
  36. };
  37. const handleTopbarAndSidebarHover = () => {
  38. const topbarNav = document.querySelector('.fi-topbar > nav');
  39. const sidebarHeader = document.querySelector('.fi-sidebar-header');
  40. const addHoveredClass = () => {
  41. topbarNav.classList.add('topbar-hovered');
  42. sidebarHeader.classList.add('topbar-hovered');
  43. };
  44. const removeHoveredClass = () => {
  45. topbarNav.classList.remove('topbar-hovered');
  46. sidebarHeader.classList.remove('topbar-hovered');
  47. };
  48. topbarNav.addEventListener('mouseenter', addHoveredClass);
  49. sidebarHeader.addEventListener('mouseenter', addHoveredClass);
  50. topbarNav.addEventListener('mouseleave', removeHoveredClass);
  51. sidebarHeader.addEventListener('mouseleave', removeHoveredClass);
  52. };