1
0
Fork 0
docsearch/packages/docsearch-react/src/useTouchEvents.ts
Pierre Millot aa666deccc
chore(deps): dependencies 2024-11-04 (#2335)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-04 18:15:51 +01:00

36 lines
1 KiB
TypeScript

import type { AutocompleteApi } from '@algolia/autocomplete-core';
import React from 'react';
interface UseTouchEventsProps {
getEnvironmentProps: AutocompleteApi<any>['getEnvironmentProps'];
panelElement: HTMLDivElement | null;
formElement: HTMLDivElement | null;
inputElement: HTMLInputElement | null;
}
export function useTouchEvents({
getEnvironmentProps,
panelElement,
formElement,
inputElement,
}: UseTouchEventsProps): void {
React.useEffect(() => {
if (!(panelElement && formElement && inputElement)) {
return undefined;
}
const { onTouchStart, onTouchMove } = getEnvironmentProps({
panelElement,
formElement,
inputElement,
});
window.addEventListener('touchstart', onTouchStart);
window.addEventListener('touchmove', onTouchMove);
return (): void => {
window.removeEventListener('touchstart', onTouchStart);
window.removeEventListener('touchmove', onTouchMove);
};
}, [getEnvironmentProps, panelElement, formElement, inputElement]);
}