@create-figma-plugin/ui
Version:
Production-grade Preact components that replicate the Figma UI design
25 lines • 1.07 kB
JavaScript
import { useEffect } from 'preact/hooks';
const INITIAL_FOCUS_DATA_ATTRIBUTE_NAME = 'data-initial-focus';
export function useInitialFocus() {
useEffect(function () {
const focusableElements = document.querySelectorAll(`[${INITIAL_FOCUS_DATA_ATTRIBUTE_NAME}]:not([tabindex="-1"]`);
if (focusableElements.length === 0) {
throw new Error(`No element with attribute \`${INITIAL_FOCUS_DATA_ATTRIBUTE_NAME}\``);
}
const checkedRadioButtonInputElement = Array.prototype.slice
.call(focusableElements)
.find(function (focusableElement) {
const inputElement = focusableElement;
return inputElement.type === 'radio' && inputElement.checked === true;
});
if (typeof checkedRadioButtonInputElement !== 'undefined') {
checkedRadioButtonInputElement.focus();
return;
}
focusableElements[0].focus();
}, []);
return {
[INITIAL_FOCUS_DATA_ATTRIBUTE_NAME]: true
};
}
//# sourceMappingURL=use-initial-focus.js.map