From 48b2757fd0971c9647b0f78821bd59c2a42daffc Mon Sep 17 00:00:00 2001 From: zernonia Date: Fri, 20 Oct 2023 15:21:56 +0800 Subject: [PATCH] fix: forceMount on scrollArea --- packages/radix-vue/src/Presence/Presence.vue | 3 +++ .../src/ScrollArea/ScrollAreaScrollbar.vue | 1 - .../ScrollArea/ScrollAreaScrollbarAuto.vue | 25 +++++++++++++------ .../ScrollArea/ScrollAreaScrollbarHover.vue | 25 +++++++++++++------ .../ScrollArea/ScrollAreaScrollbarImpl.vue | 9 +++++-- .../ScrollArea/ScrollAreaScrollbarScroll.vue | 17 ++++++++++--- .../ScrollArea/ScrollAreaScrollbarVisible.vue | 7 +++--- .../src/ScrollArea/ScrollAreaScrollbarX.vue | 9 +++++-- .../src/ScrollArea/ScrollAreaScrollbarY.vue | 9 +++++-- .../__snapshots__/ScrollArea.test.ts.snap | 4 +-- 10 files changed, 79 insertions(+), 30 deletions(-) diff --git a/packages/radix-vue/src/Presence/Presence.vue b/packages/radix-vue/src/Presence/Presence.vue index ccae079a8..7f492ea0a 100644 --- a/packages/radix-vue/src/Presence/Presence.vue +++ b/packages/radix-vue/src/Presence/Presence.vue @@ -65,6 +65,9 @@ function render() { return h(slots.default?.()[0] as VNode, { ref: (v) => { const el = unrefElement(v as HTMLElement) + if (typeof el?.hasAttribute === 'undefined') + return el + // special case to handle animation for PopperContent if (el?.hasAttribute('data-radix-popper-content-wrapper')) node.value = el.firstChild as HTMLElement diff --git a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbar.vue b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbar.vue index 5280f13fe..78e139207 100644 --- a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbar.vue +++ b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbar.vue @@ -101,7 +101,6 @@ provideScrollAreaScrollbarContext({ v-else-if="rootContext.type.value === 'always'" v-bind="$attrs" data-state="visible" - :force-mount="forceMount" > diff --git a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarAuto.vue b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarAuto.vue index 9b3199f5d..7f5f37437 100644 --- a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarAuto.vue +++ b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarAuto.vue @@ -4,10 +4,19 @@ import { useDebounceFn, useResizeObserver } from '@vueuse/core' import { injectScrollAreaRootContext } from './ScrollAreaRoot.vue' import { injectScrollAreaScrollbarContext } from './ScrollAreaScrollbar.vue' import ScrollAreaScrollbarVisible from './ScrollAreaScrollbarVisible.vue' +import { Presence } from '@/Presence' +import { useForwardRef } from '@/shared' + +export interface ScrollAreaScrollbarAutoProps { + forceMount?: boolean +} +defineProps() const rootContext = injectScrollAreaRootContext() const scrollbarContext = injectScrollAreaScrollbarContext() +const forwardRef = useForwardRef() + const visible = ref(false) const handleResize = useDebounceFn(() => { @@ -32,11 +41,13 @@ useResizeObserver(rootContext.content, handleResize) diff --git a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarHover.vue b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarHover.vue index 5d46b5c20..d6ad23871 100644 --- a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarHover.vue +++ b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarHover.vue @@ -1,10 +1,17 @@ diff --git a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarImpl.vue b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarImpl.vue index d0f2bbcf6..47238249a 100644 --- a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarImpl.vue +++ b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarImpl.vue @@ -1,11 +1,12 @@ diff --git a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarVisible.vue b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarVisible.vue index aabc7e81c..1730cfa46 100644 --- a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarVisible.vue +++ b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarVisible.vue @@ -1,5 +1,5 @@ diff --git a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarX.vue b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarX.vue index f5fd0cbe0..f7e0be681 100644 --- a/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarX.vue +++ b/packages/radix-vue/src/ScrollArea/ScrollAreaScrollbarX.vue @@ -1,16 +1,18 @@