1
0
Fork 0
docsearch/packages/docsearch-react/src/useTouchEvents.ts
renovate[bot] 10c5b2ea14
chore(deps): update lint dependency (#1120)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Samuel Bodin <1637651+bodinsamuel@users.noreply.github.com>
Co-authored-by: Clément Vannicatte <vannicattec@gmail.com>
2021-11-02 12:06:22 +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) {
React.useEffect(() => {
if (!(panelElement && formElement && inputElement)) {
return undefined;
}
const { onTouchStart, onTouchMove } = getEnvironmentProps({
panelElement,
formElement,
inputElement,
});
window.addEventListener('touchstart', onTouchStart);
window.addEventListener('touchmove', onTouchMove);
return () => {
window.removeEventListener('touchstart', onTouchStart);
window.removeEventListener('touchmove', onTouchMove);
};
}, [getEnvironmentProps, panelElement, formElement, inputElement]);
}