diff --git a/packages/shared/components/modal-dialog/sub-components/Modal.tsx b/packages/shared/components/modal-dialog/sub-components/Modal.tsx index dbd8b03578..0478800f86 100644 --- a/packages/shared/components/modal-dialog/sub-components/Modal.tsx +++ b/packages/shared/components/modal-dialog/sub-components/Modal.tsx @@ -25,6 +25,7 @@ // International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode import React from "react"; +import { isIOS, isMobileOnly, isSafari } from "react-device-detect"; import { classNames } from "../../../utils"; import { DialogSkeleton, DialogAsideSkeleton } from "../../../skeletons"; @@ -102,6 +103,24 @@ const Modal = ({ ? (footer?.props as { className?: string }) : { className: "" }; + const onTouchMove = () => { + const activeElement = document.activeElement; + if (activeElement?.tagName === "INPUT") activeElement.blur(); + }; + + const onFocusAction = () => { + document.addEventListener("touchmove", onTouchMove); + }; + + const onBlurAction = () => { + document.removeEventListener("touchmove", onTouchMove); + }; + + const iOSActions = + isMobileOnly && isIOS && isSafari + ? { onFocus: onFocusAction, onBlur: onBlurAction } + : {}; + return ( {currentDisplayType === "aside" && withBodyScroll ? (