You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
893 B
26 lines
893 B
1 month ago
|
import type { ShallowRef } from 'vue';
|
||
|
interface UseFocusControllerOptions {
|
||
|
/**
|
||
|
* return true to cancel focus
|
||
|
* @param event FocusEvent
|
||
|
*/
|
||
|
beforeFocus?: (event: FocusEvent) => boolean | undefined;
|
||
|
afterFocus?: () => void;
|
||
|
/**
|
||
|
* return true to cancel blur
|
||
|
* @param event FocusEvent
|
||
|
*/
|
||
|
beforeBlur?: (event: FocusEvent) => boolean | undefined;
|
||
|
afterBlur?: () => void;
|
||
|
}
|
||
|
export declare function useFocusController<T extends {
|
||
|
focus: () => void;
|
||
|
}>(target: ShallowRef<T | undefined>, { beforeFocus, afterFocus, beforeBlur, afterBlur, }?: UseFocusControllerOptions): {
|
||
|
isFocused: import("vue").Ref<boolean>;
|
||
|
/** Avoid using wrapperRef and handleFocus/handleBlur together */
|
||
|
wrapperRef: ShallowRef<HTMLElement | undefined>;
|
||
|
handleFocus: (event: FocusEvent) => void;
|
||
|
handleBlur: (event: FocusEvent) => void;
|
||
|
};
|
||
|
export {};
|