fix(@vant/use): useScrollParent ssr (#8603)

This commit is contained in:
neverland 2021-04-22 19:43:30 +08:00 committed by GitHub
parent f0eb0d18f0
commit 1203b29720
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,8 +1,10 @@
import { ref, Ref, onMounted } from 'vue'; import { ref, Ref, onMounted } from 'vue';
import { inBrowser } from '../utils';
type ScrollElement = HTMLElement | Window; type ScrollElement = HTMLElement | Window;
const overflowScrollReg = /scroll|auto/i; const overflowScrollReg = /scroll|auto/i;
const defaultRoot = inBrowser ? window : undefined;
function isElement(node: Element) { function isElement(node: Element) {
const ELEMENT_NODE_TYPE = 1; const ELEMENT_NODE_TYPE = 1;
@ -14,7 +16,10 @@ function isElement(node: Element) {
} }
// https://github.com/youzan/vant/issues/3823 // https://github.com/youzan/vant/issues/3823
export function getScrollParent(el: Element, root: ScrollElement = window) { export function getScrollParent(
el: Element,
root: ScrollElement | undefined = defaultRoot
) {
let node = el; let node = el;
while (node && node !== root && isElement(node)) { while (node && node !== root && isElement(node)) {
@ -30,7 +35,7 @@ export function getScrollParent(el: Element, root: ScrollElement = window) {
export function useScrollParent( export function useScrollParent(
el: Ref<Element | undefined>, el: Ref<Element | undefined>,
root: ScrollElement = window root: ScrollElement | undefined = defaultRoot
) { ) {
const scrollParent = ref<Element | Window>(); const scrollParent = ref<Element | Window>();