Skip to content

Commit d33782c

Browse files
s-baratis-barati
authored andcommitted
refactor: remove vue from package dependencies
1 parent 399e2e2 commit d33782c

File tree

6 files changed

+45
-36
lines changed

6 files changed

+45
-36
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"type": "module",
33
"version": "0.0.0",
44
"private": true,
5-
"packageManager": "pnpm@10.7.0",
5+
"packageManager": "pnpm@10.10.0",
66
"scripts": {
77
"lint": "eslint .",
88
"lint:fix": "eslint . --fix",

packages/vaul-vue/package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@
4141
},
4242
"dependencies": {
4343
"@vueuse/core": "^13.0.0",
44-
"reka-ui": "^2.1.1",
45-
"vue": "^3.5.13"
44+
"reka-ui": "^2.1.1"
4645
},
4746
"devDependencies": {
4847
"@rushstack/eslint-patch": "^1.11.0",

packages/vaul-vue/src/DrawerRoot.vue

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<script setup lang="ts">
22
import type { DrawerRootEmits, DrawerRootProps } from './controls'
3+
import { useVModel } from '@vueuse/core'
34
import { DialogRoot } from 'reka-ui'
45
import { computed, ref, toRefs } from 'vue'
56
import { CLOSE_THRESHOLD, SCROLL_LOCK_TIMEOUT, TRANSITIONS } from './constants'
@@ -9,6 +10,8 @@ import { transitionDurationToMs } from './helpers'
910
import './style.css'
1011
1112
const props = withDefaults(defineProps<DrawerRootProps>(), {
13+
open: undefined,
14+
defaultOpen: undefined,
1215
fixed: false,
1316
dismissible: true,
1417
snapPoints: undefined,
@@ -23,35 +26,32 @@ const props = withDefaults(defineProps<DrawerRootProps>(), {
2326
handleOnly: false,
2427
})
2528
26-
const emit = defineEmits<DrawerRootEmits>()
29+
const emits = defineEmits<DrawerRootEmits>()
2730
2831
const slots = defineSlots<{
2932
default: (props: {
3033
open: typeof open.value
3134
}) => any
3235
}>()
3336
34-
const open = defineModel<boolean>('open', {
35-
required: false,
36-
default: false,
37+
const open = useVModel(props, 'open', emits, {
38+
defaultValue: props.defaultOpen,
39+
passive: (props.open === undefined) as false,
3740
})
3841
39-
const activeSnapPoint = defineModel<number | string | null>('activeSnapPoint', {
40-
required: false,
41-
default: null,
42+
const activeSnapPoint = useVModel(props, 'activeSnapPoint', emits, {
43+
passive: (props.activeSnapPoint === undefined) as false,
4244
})
4345
44-
const defaultOpen = ref(open.value)
45-
4646
const fadeFromIndex = computed(() => props.fadeFromIndex ?? (props.snapPoints && props.snapPoints.length - 1))
4747
4848
const emitHandlers = {
49-
emitDrag: (percentageClosed: number) => emit('drag', percentageClosed),
50-
emitRelease: (open: boolean) => emit('release', open),
51-
emitClose: () => emit('close'),
49+
emitDrag: (percentageClosed: number) => emits('drag', percentageClosed),
50+
emitRelease: (open: boolean) => emits('release', open),
51+
emitClose: () => emits('close'),
5252
emitOpenChange: (o: boolean) => {
5353
window.setTimeout(() => {
54-
emit('animationEnd', o)
54+
emits('animationEnd', o)
5555
}, transitionDurationToMs(TRANSITIONS.DURATION))
5656
},
5757
}
@@ -61,7 +61,7 @@ const context = useDrawer({
6161
...toRefs(props),
6262
activeSnapPoint,
6363
fadeFromIndex,
64-
open,
64+
open: open as any,
6565
})
6666
6767
const { hasBeenOpened, modal } = context
@@ -71,11 +71,17 @@ provideDrawerRootContext(context)
7171
const openProxy = computed({
7272
get: () => open.value,
7373
set: (o: boolean) => {
74-
open.value = o
74+
if (!props.dismissible && !open.value)
75+
return
7576
7677
if (o) {
7778
hasBeenOpened.value = true
7879
}
80+
else {
81+
context.closeDrawer(true)
82+
}
83+
84+
open.value = o
7985
},
8086
})
8187

packages/vaul-vue/src/DrawerRootNested.vue

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
<script setup lang="ts">
22
import type { DrawerRootEmits, DrawerRootProps } from './controls'
3+
import { useVModel } from '@vueuse/core'
34
import { useForwardPropsEmits } from 'reka-ui'
5+
import { computed } from 'vue'
46
import { injectDrawerRootContext } from './context'
57
import DrawerRoot from './DrawerRoot.vue'
6-
import { watchEffect } from 'vue';
78
89
const props = defineProps<DrawerRootProps>()
910
@@ -15,30 +16,24 @@ const {
1516
onNestedRelease,
1617
} = injectDrawerRootContext()
1718
18-
const open = defineModel<boolean>('open', {
19-
required: false,
20-
default: false,
21-
})
19+
const delegatedProps = computed(() => {
20+
const { nested: _, ...delegated } = props
2221
23-
const activeSnapPoint = defineModel<number | string | null>('activeSnapPoint', {
24-
required: false,
25-
default: null,
22+
return delegated
2623
})
2724
28-
const forwarded: ReturnType<typeof useForwardPropsEmits> = useForwardPropsEmits(props, emits)
29-
30-
watchEffect(() => {
31-
onNestedOpenChange(open.value)
32-
})
25+
const forwarded = useForwardPropsEmits(delegatedProps, emits)
3326
</script>
3427

3528
<template>
3629
<DrawerRoot
37-
v-bind="forwarded"
38-
v-model:open="open"
39-
:should-scale-background="false"
40-
:active-snap-point="activeSnapPoint"
4130
nested
31+
v-bind="forwarded"
32+
@update:open="(o) => {
33+
if (o) {
34+
onNestedOpenChange(o);
35+
}
36+
}"
4237
@close="onNestedOpenChange(false)"
4338
@drag="onNestedDrag"
4439
@release="onNestedRelease"

packages/vaul-vue/src/controls.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ export interface WithoutFadeFromProps {
2121
}
2222

2323
export type DrawerRootProps = {
24+
activeSnapPoint?: number | string | null
25+
open?: boolean
26+
/**
27+
* Opened by default, skips initial enter animation. Still reacts to `open` state changes
28+
* @default false
29+
*/
30+
defaultOpen?: boolean
2431
/**
2532
* Number between 0 and 1 that determines when the drawer should be closed.
2633
* Example: threshold of 0.5 would close the drawer if the user swiped for 50% of the height of the drawer or more.
@@ -101,6 +108,8 @@ export interface DrawerRootEmits {
101108
(e: 'drag', percentageClosed: number): void
102109
(e: 'release', open: boolean): void
103110
(e: 'close'): void
111+
(e: 'update:open', open: boolean): void
112+
(e: 'update:activeSnapPoint', val: string | number): void
104113
/**
105114
* Gets triggered after the open or close animation ends, it receives an `open` argument with the `open` state of the drawer by the time the function was triggered.
106115
* Useful to revert any state changes for example.

pnpm-lock.yaml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)