1.2.0 • Published 1 year ago

@charles5277/vue-bottom-sheet-mobile v1.2.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Vue Bottom Sheet

Size Downloads Version

A nice clean and touch-friendly bottom sheet component based on Vue.js and hammer.js for Vue 3

Installation

NPM

npm install @charles5277/vue-bottom-sheet-mobile

Yarn

yarn add @charles5277/vue-bottom-sheet-mobile

Usage

<template>
  <bottom-sheet ref="myBottomSheet">
    <h1>Lorem Ipsum</h1>
    <h2>What is Lorem Ipsum?</h2>
    <p>
      <strong>Lorem Ipsum</strong> is simply dummy text
    </p>
  </bottom-sheet>
</template>

<script setup>
import BottomSheet from "@charles5277/vue-bottom-sheet-mobile";
import  "@charles5277/vue-bottom-sheet-mobile/dist/style.css";
import { ref } from "vue";

const myBottomSheet = ref(null)

const open = () => {
  myBottomSheet.value.open();
}

const close = () => {
  myBottomSheet.value.close();
}
</script>

Usage setup + TS

<template>
  <bottom-sheet ref="myBottomSheet">
    <h1>Lorem Ipsum</h1>
    <h2>What is Lorem Ipsum?</h2>
    <p>
      <strong>Lorem Ipsum</strong> is simply dummy text
    </p>
  </bottom-sheet>
</template>

<script setup lang="ts">
import BottomSheet from "@charles5277/vue-bottom-sheet-mobile";
import  "@charles5277/vue-bottom-sheet-mobile/dist/style.css";
import { ref } from "vue";

const myBottomSheet = ref<InstanceType<typeof BottomSheet>>()

const open = () => {
  myBottomSheet.value.open();
}

const close = () => {
  myBottomSheet.value.close();
}
</script>

Usage in Nuxt 3

For Nuxt 3, just wrap component in <client-only>

<template>
  <client-only>
    <bottom-sheet ref="myBottomSheet">
      <h1>Lorem Ipsum</h1>
      <h2>What is Lorem Ipsum?</h2>
      <p>
        <strong>Lorem Ipsum</strong> is simply dummy text
      </p>
    </bottom-sheet>
  </client-only>
</template>

Props

PropTypeDescriptionExampleDefaults
max-widthNumberSet max-width of component card in px:max-width="640"640
max-heightNumberSets the maximum height of the window, if not set it takes the height of the content:max-height="90"-
can-swipeBooleanEnable or disable swipe to close:can-swipe="false"true
overlayBooleanEnable overlay:overlay="false"true
overlay-colorStringSet overlay color with opacityoverlay-color="#0000004D"#0000004D
overlay-click-closeBooleanClose window on overlay click:overlay-click-close="false"true
transition-durationNumberTransition animation duration:transition-duration="0.5"0.5

Events

EventDescriptionExample
openedFire when card component is opened@opened=""
closedFire when card component is closed@closed=""
dragging-upFire while card component dragging up@dragging-up=""
dragging-downFire while card component dragging down@dragging-down=""

Slots

You can use this named slots:

<template>
  <bottom-sheet ref="myBottomSheet">
    <template #header>
      <h1>Lorem Ipsum</h1>
    </template>
    <template #default>
      <h2>What is Lorem Ipsum?</h2>
    </template>
    <template #footer>
      <p>
        <strong>Lorem Ipsum</strong> is simply dummy text
      </p>
    </template>
  </bottom-sheet>
</template>
1.2.0

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago