mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-05-20 21:39:15 +08:00
fix(@vant/use): useScrollParent ssr (#8603)
This commit is contained in:
parent
f0eb0d18f0
commit
1203b29720
@ -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>();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user