this repo has no description
at main 50 lines 1.6 kB view raw
1const focusDeck = () => { 2 let timer = setTimeout(() => { 3 const columns = document.getElementById('columns'); 4 if (columns) { 5 // Focus focused column 6 const focusedColumn = columns.querySelector('.deck-container.focus'); 7 if (focusedColumn) { 8 focusedColumn.focus(); 9 } else { 10 // Focus first column within viewport 11 const firstVisibleColumn = Array.from( 12 columns.querySelectorAll('.deck-container'), 13 ).find((column) => { 14 const columnRect = column.getBoundingClientRect(); 15 return columnRect.left >= 0; 16 }); 17 if (firstVisibleColumn) { 18 firstVisibleColumn.focus(); 19 } else { 20 // Focus first column 21 columns.querySelector('.deck-container')?.focus?.(); 22 } 23 } 24 } else { 25 const modals = document.querySelectorAll('#modal-container > *'); 26 if (modals?.length) { 27 // Focus last modal 28 const modal = modals[modals.length - 1]; // last one 29 const modalFocusElement = 30 modal.querySelector('[tabindex="-1"]') || modal; 31 if (modalFocusElement) { 32 modalFocusElement.focus(); 33 return; 34 } 35 } 36 const backDrop = document.querySelector('.deck-backdrop'); 37 if (backDrop) return; 38 // Focus last deck 39 const pages = document.querySelectorAll('.deck-container'); 40 const page = pages[pages.length - 1]; // last one 41 if (page && page.tabIndex === -1) { 42 console.log('FOCUS', page); 43 page.focus(); 44 } 45 } 46 }, 100); 47 return () => clearTimeout(timer); 48}; 49 50export default focusDeck;