this repo has no description
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;