Skip to content

Commit e89ed1e

Browse files
author
Tanner Reits
committed
refactor(app): move focus utils to global
1 parent 9be6ad0 commit e89ed1e

File tree

3 files changed

+15
-19
lines changed

3 files changed

+15
-19
lines changed

core/src/components/app/app.tsx

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import type { ComponentInterface } from '@stencil/core';
2-
import { Build, Component, Element, Host, Method, h } from '@stencil/core';
3-
import type { FocusVisibleUtility } from '@utils/focus-visible';
2+
import { Component, Element, Host, Method, h } from '@stencil/core';
3+
import { initFocusVisibleUtility } from '@utils/focus-visible';
44

55
import { config } from '../../global/config';
6-
import { getIonTheme, rIC } from '../../global/ionic-global';
6+
import { getIonTheme } from '../../global/ionic-global';
77

88
/**
99
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
@@ -14,19 +14,8 @@ import { getIonTheme, rIC } from '../../global/ionic-global';
1414
styleUrl: 'app.scss',
1515
})
1616
export class App implements ComponentInterface {
17-
private focusVisible?: FocusVisibleUtility;
18-
1917
@Element() el!: HTMLElement;
2018

21-
componentDidLoad() {
22-
// TODO can we move focus visible to global
23-
if (Build.isBrowser) {
24-
rIC(async () => {
25-
import('../../utils/focus-visible').then((module) => (this.focusVisible = module.startFocusVisible()));
26-
});
27-
}
28-
}
29-
3019
/**
3120
* @internal
3221
* Used to set focus on an element that uses `ion-focusable`.
@@ -39,9 +28,8 @@ export class App implements ComponentInterface {
3928
*/
4029
@Method()
4130
async setFocus(elements: HTMLElement[]) {
42-
if (this.focusVisible) {
43-
this.focusVisible.setFocus(elements);
44-
}
31+
const focusVisible = initFocusVisibleUtility();
32+
focusVisible.setFocus(elements);
4533
}
4634

4735
render() {

core/src/global/ionic-global.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,8 +327,7 @@ export const initialize = (userConfig: IonicConfig = {}) => {
327327
if (typeof (window as any) !== 'undefined') {
328328
import('../utils/keyboard/keyboard').then((module) => module.startKeyboardAssist(window));
329329
}
330-
// TODO
331-
// import('../../utils/focus-visible').then((module) => (this.focusVisible = module.startFocusVisible()));
330+
import('../utils/focus-visible').then((module) => (module.initFocusVisibleUtility()));
332331
});
333332
}
334333
};

core/src/utils/focus-visible.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@ export interface FocusVisibleUtility {
2020
setFocus: (elements: Element[]) => void;
2121
}
2222

23+
let focusVisibleUtility: FocusVisibleUtility | null = null;
24+
25+
export const initFocusVisibleUtility = () => {
26+
if (!focusVisibleUtility) {
27+
focusVisibleUtility = startFocusVisible();
28+
}
29+
return focusVisibleUtility;
30+
};
31+
2332
export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility => {
2433
let currentFocus: Element[] = [];
2534
let keyboardMode = true;

0 commit comments

Comments
 (0)