diff --git a/packages/@headlessui-react/CHANGELOG.md b/packages/@headlessui-react/CHANGELOG.md index 8ccdac3..63f1e2f 100644 --- a/packages/@headlessui-react/CHANGELOG.md +++ b/packages/@headlessui-react/CHANGELOG.md @@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -- Nothing yet! +### Fixed + +- Improve iOS scroll locking ([#1830](https://github.com/tailwindlabs/headlessui/pull/1830)) ## [1.7.0] - 2022-09-06 diff --git a/packages/@headlessui-react/src/components/dialog/dialog.tsx b/packages/@headlessui-react/src/components/dialog/dialog.tsx index fa7255b..5d70ca5 100644 --- a/packages/@headlessui-react/src/components/dialog/dialog.tsx +++ b/packages/@headlessui-react/src/components/dialog/dialog.tsx @@ -119,16 +119,10 @@ function useScrollLock(ownerDocument: Document | null, enabled: boolean) { } if (isIOS()) { - d.addEventListener( - ownerDocument, - 'touchmove', - (e) => { - e.preventDefault() - }, - { passive: false } - ) - let scrollPosition = window.pageYOffset + style(documentElement, 'position', 'fixed') + style(documentElement, 'marginTop', `-${scrollPosition}px`) + style(documentElement, 'width', `100%`) d.add(() => window.scrollTo(0, scrollPosition)) } diff --git a/packages/@headlessui-vue/CHANGELOG.md b/packages/@headlessui-vue/CHANGELOG.md index 1877a60..38cc81f 100644 --- a/packages/@headlessui-vue/CHANGELOG.md +++ b/packages/@headlessui-vue/CHANGELOG.md @@ -7,7 +7,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -- Nothing yet! +### Fixed + +- Improve iOS scroll locking ([#1830](https://github.com/tailwindlabs/headlessui/pull/1830)) ## [1.7.0] - 2022-09-06 diff --git a/packages/@headlessui-vue/src/components/dialog/dialog.ts b/packages/@headlessui-vue/src/components/dialog/dialog.ts index 7f21c78..2be4781 100644 --- a/packages/@headlessui-vue/src/components/dialog/dialog.ts +++ b/packages/@headlessui-vue/src/components/dialog/dialog.ts @@ -249,16 +249,10 @@ export let Dialog = defineComponent({ } if (isIOS()) { - d.addEventListener( - owner, - 'touchmove', - (e) => { - e.preventDefault() - }, - { passive: false } - ) - let scrollPosition = window.pageYOffset + style(documentElement, 'position', 'fixed') + style(documentElement, 'marginTop', `-${scrollPosition}px`) + style(documentElement, 'width', `100%`) d.add(() => window.scrollTo(0, scrollPosition)) }