Compare commits

...

6 Commits

Author SHA1 Message Date
Maria Hutt
9d2a5d2803 refactor(focus-visible): reset on onFocus 2024-11-27 14:34:12 -08:00
Maria Hutt
61d68d0d87 refactor(focus-visible): more comments 2024-11-27 14:21:27 -08:00
Maria Hutt
9f772f4ea7 refactor(focus-visible): add check for reset 2024-11-27 13:39:45 -08:00
Maria Hutt
e7b53047be refactor(focus-visible): more comments 2024-11-27 13:18:55 -08:00
Maria Hutt
ad7a02d613 refactor(focus-visible): add console logs 2024-11-26 14:21:25 -08:00
Maria Hutt
aaebad516a refactor(focus-visible): reset keyboardMode after focus 2024-11-26 10:46:46 -08:00

View File

@@ -13,6 +13,7 @@ const FOCUS_KEYS = [
'ArrowUp',
'Home',
'End',
'Meta',
];
export interface FocusVisibleUtility {
@@ -28,24 +29,34 @@ export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility =>
const root = rootEl ? rootEl : document.body;
const setFocus = (elements: Element[]) => {
console.log('setFocus', elements, currentFocus);
console.log('keyboardMode', keyboardMode);
currentFocus.forEach((el) => el.classList.remove(ION_FOCUSED));
elements.forEach((el) => el.classList.add(ION_FOCUSED));
currentFocus = elements;
};
const pointerDown = () => {
// SPACE triggers on iOS device with physical keyboard
const pointerDown = (ev: Event) => {
console.log('pointerDown', ev);
console.log('keyboardMode', keyboardMode);
keyboardMode = false;
setFocus([]);
};
// Enter triggers on iOS device with physical keyboard
const onKeydown = (ev: Event) => {
console.log('onKeydown', ev);
console.log('keyboardMode', keyboardMode);
keyboardMode = FOCUS_KEYS.includes((ev as KeyboardEvent).key);
if (!keyboardMode) {
setFocus([]);
}
};
const onFocusin = (ev: Event) => {
console.log('onFocusin', ev);
console.log('keyboardMode', keyboardMode);
let toFocus: Element[] = [];
if (keyboardMode && ev.composedPath !== undefined) {
const toFocus = ev.composedPath().filter((el: any) => {
toFocus = ev.composedPath().filter((el: any) => {
// TODO(FW-2832): type
if (el.classList) {
return el.classList.contains(ION_FOCUSABLE);
@@ -54,8 +65,12 @@ export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility =>
}) as Element[];
setFocus(toFocus);
}
console.log('toFocus', toFocus);
keyboardMode = true;
};
const onFocusout = () => {
console.log('onFocusout');
console.log('keyboardMode', keyboardMode);
if (ref.activeElement === root) {
setFocus([]);
}