26 lines
722 B
JavaScript
26 lines
722 B
JavaScript
import * as React from 'react';
|
|
import { getObservedElement } from 'tabster';
|
|
import { useTabster } from './useTabster';
|
|
/**
|
|
*
|
|
* @param name - The observed element to focus
|
|
* @returns Function that will focus the
|
|
*/ export function useFocusObserved(name, options = {}) {
|
|
const { timeout = 1000 } = options;
|
|
const tabster = useTabster();
|
|
const observedAPI = tabster ? getObservedElement(tabster) : null;
|
|
return React.useCallback(()=>{
|
|
if (observedAPI) {
|
|
return observedAPI.requestFocus(name, timeout);
|
|
}
|
|
return {
|
|
result: Promise.resolve(false),
|
|
cancel: ()=>null
|
|
};
|
|
}, [
|
|
observedAPI,
|
|
name,
|
|
timeout
|
|
]);
|
|
}
|