@react-native-aria/interactions
Version:
40 lines (39 loc) • 983 B
JavaScript
import { useEffect } from 'react';
import { useBackHandler } from './useBackHandler';
let keyboardDismissHandlers = [];
export const keyboardDismissHandlerManager = {
push: handler => {
keyboardDismissHandlers.push(handler);
return () => {
keyboardDismissHandlers = keyboardDismissHandlers.filter(h => h !== handler);
};
},
length: () => keyboardDismissHandlers.length,
pop: () => {
return keyboardDismissHandlers.pop();
}
};
/**
* Handles attaching callback for Escape key listener on web and Back button listener on Android
*/
export const useKeyboardDismissable = ({
enabled,
callback
}) => {
useEffect(() => {
let cleanupFn = () => {};
if (enabled) {
cleanupFn = keyboardDismissHandlerManager.push(callback);
} else {
cleanupFn();
}
return () => {
cleanupFn();
};
}, [enabled, callback]);
useBackHandler({
enabled,
callback
});
};
//# sourceMappingURL=useKeyboardDismisssable.js.map