mirror of
https://github.com/ant-design/ant-design.git
synced 2026-02-09 02:49:18 +08:00
* feat: Modal support focusable config * chore: doc & test * chore: adjust logic * test: add test case * chore: update docs
27 lines
676 B
TypeScript
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]);
|
|
}
|