vant/src/share-sheet

ShareSheet

Install

import { createApp } from 'vue';
import { ShareSheet } from 'vant';

const app = createApp();
app.use(ShareSheet);

Usage

Basic Usage

<van-cell title="Show ShareSheet" @click="showShare = true" />
<van-share-sheet
  v-model:show="showShare"
  title="Share"
  :options="options"
  @select="onSelect"
/>
import { ref } from 'vue';
import { Toast } from 'vant';

export default {
  setup() {
    const showShare = ref(false);
    const options = [
      { name: 'Wechat', icon: 'wechat' },
      { name: 'Weibo', icon: 'weibo' },
      { name: 'Link', icon: 'link' },
      { name: 'Poster', icon: 'poster' },
      { name: 'Qrcode', icon: 'qrcode' },
    ];

    const onSelect = (option) => {
      Toast(option.name);
      showShare.value = false;
    };

    return {
      options,
      onSelect,
      showShare,
    };
  },
};

Multi Line

<van-share-sheet v-model:show="showShare" title="Share" :options="options" />
import { ref } from 'vue';

export default {
  setup() {
    const showShare = ref(false);
    const options = [
      [
        { name: 'Wechat', icon: 'wechat' },
        { name: 'Wechat Moments', icon: 'wechat-moments' },
        { name: 'Weibo', icon: 'weibo' },
        { name: 'QQ', icon: 'qq' },
      ],
      [
        { name: 'Link', icon: 'link' },
        { name: 'Poster', icon: 'poster' },
        { name: 'Qrcode', icon: 'qrcode' },
        { name: 'Weapp Qrcode', icon: 'weapp-qrcode' },
      ],
    ];

    return {
      options,
      showShare,
    };
  },
};

Custom Icon

<van-share-sheet v-model:show="showShare" :options="options" />
import { ref } from 'vue';

export default {
  setup() {
    const showShare = ref(false);
    const options = [
      {
        name: 'Name',
        icon: 'https://img01.yzcdn.cn/vant/custom-icon-fire.png',
      },
      {
        name: 'Name',
        icon: 'https://img01.yzcdn.cn/vant/custom-icon-light.png',
      },
      {
        name: 'Name',
        icon: 'https://img01.yzcdn.cn/vant/custom-icon-water.png',
      },
    ];

    return {
      options,
      showShare,
    };
  },
};

Show Description

<van-share-sheet
  v-model:show="showShare"
  :options="options"
  title="Share"
  description="Description"
/>
import { ref } from 'vue';

export default {
  setup() {
    const showShare = ref(false);
    const options = [
      { name: 'Wechat', icon: 'wechat' },
      { name: 'Weibo', icon: 'weibo' },
      { name: 'Link', icon: 'link', description: 'Description' },
      { name: 'Poster', icon: 'poster' },
      { name: 'Qrcode', icon: 'qrcode' },
    ];

    return {
      options,
      showShare,
    };
  },
};

API

Props

Attribute Description Type Default
v-model:show Whether to show ShareSheet boolean false
options Share options Option[] []
title Title string -
cancel-text Cancel button text string 'Cancel'
description Description string -
duration Transition duration, unit second number | string 0.3
overlay Whether to show overlay boolean true
overlay-class Custom overlay class string | Array | object -
overlay-style Custom overlay style object -
lock-scroll Whether to lock background scroll boolean true
lazy-render Whether to lazy render util appeared boolean true
close-on-popstate Whether to close when popstate boolean true
close-on-click-overlay Whether to close when overlay is clicked boolean true
safe-area-inset-bottom Whether to enable bottom safe area adaptation boolean true
teleport Return the mount node for ShareSheet string | Element -

Data Structure of Option

Key Description Type
name Option name string
description Option description string
icon Option iconcan be set to wechat weibo qq link qrcode poster weapp-qrcode wechat-moments or image URL string
className Option className is used to set the class props to the share item string

Events

Event Description Arguments
select Emitted when an option is clicked option: Option, index: number
cancel Emitted when the cancel button is clicked -
click-overlay Emitted when overlay is clicked event: MouseEvent

Slots

Name Description
title Custom title
description Custom description

Less Variables

How to use: Custom Theme.

Name Default Value Description
@share-sheet-header-padding @padding-sm @padding-md @padding-base -
@share-sheet-title-color @text-color -
@share-sheet-title-font-size @font-size-md -
@share-sheet-title-line-height @line-height-md -
@share-sheet-description-color @gray-6 -
@share-sheet-description-font-size @font-size-sm -
@share-sheet-description-line-height 16px -
@share-sheet-icon-size 48px -
@share-sheet-option-name-color @gray-7 -
@share-sheet-option-name-font-size @font-size-sm -
@share-sheet-option-description-color @gray-5 -
@share-sheet-option-description-font-size @font-size-sm -
@share-sheet-cancel-button-font-size @font-size-lg -
@share-sheet-cancel-button-height 48px -
@share-sheet-cancel-button-background @white -