0.0.6 • Published 11 months ago

vue-swipe-sheet v0.0.6

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

Vue Swipe Sheet

Vue3 bottom swipe sheet

🤝 Demo

👉 Demo here

📦 Installation

yarn

yarn add vue-swipe-sheet

npm

npm i vue-swipe-sheet

🔧 Simple usage

import VueSwipeSheet from "vue-swipe-sheet";
import "vue-swipe-sheet/style.css"

const isOpenSheet = ref(true)
<VueSwipeSheet v-model="isOpenSheet">
    <div>
        <h2>Here should be some content</h2>
    </div>
</VueSwipeSheet>

📋 Props

PropertyTypeDefaultDescription
modelValuebooleantrueState, whether the sheet is currently open
snapPointsnumber[]200, 400An array of sheet heights at which it will stick
isLockScrollbooleantrueLock external scroll
startSnapPointnumber200Starting sheet height upon initialization
withBackdropbooleantrueSpecifies whether to display backdrop
backdropColorstringrgba(0, 0, 0, 0.3)Backdrop color
zIndexnumber9999z-index for the background, for the sheet itself the z-index is z-index + 1, can be useful if you need to have several sheets at the same time, and adjust their sequence
isCloseOnOutsideClickbooleanfalseWhether to close a sheet when clicking outside of it

🔧 Event

NamePayloadDescription
update:modelValuenewState: booleanCalled when the open state of a sheet changes
update:positionYnewPositionY: numberCalled whenever there is a change in position relative to Y
pan:startevent: HammerInputCalled when pan starts
pan:moveevent: HammerInputCalled by the pan process
pan:endevent: HammerInputCalled when pan ends

🎯 External manipulation

You can access the component via Ref and interact with such variables and values

NameTypeDescription
positionYRef < number >Current offset from top
setPositionY(newPositionY: number): voidChange offset from top
setSnapPoint(newSnapPoint: number): voidA function similar to setPositionY but sets the height of the popup

💫 Additional example

<template>
  <div>
    <button @click="() => setStateOpenSwipeSheet(false)">Close swipe sheet</button>
    <button @click="() => setStateOpenSwipeSheet(true)">Open swipe sheet</button>
    <button @click="() => setVueSwipeSheetSnapPoint(700)">Set sheet snap point to 700</button>

    <VueSwipeSheet
        ref="vueSwipeSheetRef"
        v-model="isOpenSheet"
        :start-snap-point="300"
        :snap-points="[100, 300, 600, 810]"
    >
      <div>
        <h2>Here should be some content </h2>
        <p>Cur rumor cadunt? Nunquam perdere pulchritudine.</p>
      </div>
    </VueSwipeSheet>
  </div>
</template>


<script setup lang="ts">
  import {ref} from "vue";
  import VueSwipeSheet from "vue-swipe-sheet";
  import "vue-swipe-sheet/style.css"
  
  const vueSwipeSheetRef = ref<typeof VueSwipeSheet>()
  const isOpenSheet = ref(true)

  const setVueSwipeSheetSnapPoint = (newSnapPoint: number) => {
    vueSwipeSheetRef.value.setSnapPoint(newSnapPoint)
  }
  const setStateOpenSwipeSheet = (newState: boolean) => {
    isOpenSheet.value = newState
  }
</script>
0.0.6

11 months ago

0.0.5

11 months ago

0.0.4

11 months ago

0.0.3

11 months ago

0.0.2

11 months ago

0.0.1

11 months ago