tabPanels.js 891 B

12345678910111213141516171819202122232425262728293031
  1. // Tabs behavior (used on cron pages)
  2. export default function handleTabPanels() {
  3. const tabs = document.querySelector('.js-tabs');
  4. if (!tabs) {
  5. return;
  6. }
  7. const tabItems = tabs.querySelectorAll('.tabs-item');
  8. const panels = tabs.querySelectorAll('.tabs-panel');
  9. tabItems.forEach((tab) => {
  10. tab.addEventListener('click', (event) => {
  11. // Reset state
  12. panels.forEach((panel) => (panel.hidden = true));
  13. tabItems.forEach((tab) => {
  14. tab.setAttribute('aria-selected', false);
  15. tab.setAttribute('tabindex', -1);
  16. });
  17. // Show the selected panel
  18. const tabId = event.target.getAttribute('id');
  19. const panel = document.querySelector(`[aria-labelledby="${tabId}"]`);
  20. panel.hidden = false;
  21. // Mark the selected tab as active
  22. event.target.setAttribute('aria-selected', true);
  23. event.target.setAttribute('tabindex', 0);
  24. event.target.focus();
  25. });
  26. });
  27. }