Files
ant-design/components/drawer/useFocusable.ts
二货爱吃白萝卜 0cdfaf578a feat: Modal support focusable (#56500)
* feat: Modal support focusable config

* chore: doc & test

* chore: adjust logic

* test: add test case

* chore: update docs
2026-01-06 14:34:30 +08:00

27 lines
676 B
TypeScript

import { useMemo } from 'react';
export type OmitFocusType = 'focusTriggerAfterClose' | 'focusTrap' | 'autoFocusButton';
export interface FocusableConfig {
focusTriggerAfterClose?: boolean;
trap?: boolean;
}
export default function useFocusable(
focusable?: FocusableConfig,
defaultTrap?: boolean,
legacyFocusTriggerAfterClose?: FocusableConfig['focusTriggerAfterClose'],
) {
return useMemo(() => {
const ret: FocusableConfig = {
trap: defaultTrap ?? true,
focusTriggerAfterClose: legacyFocusTriggerAfterClose ?? true,
};
return {
...ret,
...focusable,
};
}, [focusable, defaultTrap, legacyFocusTriggerAfterClose]);
}