vant/src/dropdown-menu/README.md
2020-09-28 11:46:26 +08:00

4.8 KiB
Raw Blame History

DropdownMenu

Install

import { createApp } from 'vue';
import { DropdownMenu, DropdownItem } from 'vant';

const app = createApp();
app.use(DropdownMenu);
app.use(DropdownItem);

Usage

Basic Usage

<van-dropdown-menu>
  <van-dropdown-item v-model="value1" :options="option1" />
  <van-dropdown-item v-model="value2" :options="option2" />
</van-dropdown-menu>
export default {
  data() {
    return {
      value1: 0,
      value2: 'a',
      option1: [
        { text: 'Option1', value: 0 },
        { text: 'Option2', value: 1 },
        { text: 'Option3', value: 2 },
      ],
      option2: [
        { text: 'Option A', value: 'a' },
        { text: 'Option B', value: 'b' },
        { text: 'Option C', value: 'c' },
      ],
    };
  },
};

Custom Content

<van-dropdown-menu>
  <van-dropdown-item v-model="value" :options="option" />
  <van-dropdown-item title="Title" ref="item">
    <van-cell center title="Title">
      <template #right-icon>
        <van-switch v-model="switch1" size="24" active-color="#ee0a24" />
      </template>
    </van-cell>
    <van-cell center title="Title">
      <template #right-icon>
        <van-switch v-model="switch2" size="24" active-color="#ee0a24" />
      </template>
    </van-cell>
    <div style="padding: 5px 16px;">
      <van-button type="danger" block round @click="onConfirm">
        Confirm
      </van-button>
    </div>
  </van-dropdown-item>
</van-dropdown-menu>
export default {
  data() {
    return {
      value: 0,
      switch1: false,
      switch2: false,
      option: [
        { text: 'Option1', value: 0 },
        { text: 'Option2', value: 1 },
        { text: 'Option3', value: 2 },
      ],
    };
  },
  methods: {
    onConfirm() {
      this.$refs.item.toggle();
    },
  },
};

Custom Active Color

Use active-color prop to custom active color of the title and options.

<van-dropdown-menu active-color="#1989fa">
  <van-dropdown-item v-model="value1" :options="option1" />
  <van-dropdown-item v-model="value2" :options="option2" />
</van-dropdown-menu>

Expand Direction

<van-dropdown-menu direction="up">
  <van-dropdown-item v-model="value1" :options="option1" />
  <van-dropdown-item v-model="value2" :options="option2" />
</van-dropdown-menu>

Disabled

<van-dropdown-menu>
  <van-dropdown-item v-model="value1" disabled :options="option1" />
  <van-dropdown-item v-model="value2" disabled :options="option2" />
</van-dropdown-menu>

API

DropdownMenu Props

Attribute Description Type Default
active-color Active color of title and option string #ee0a24
direction Expand direction, can be set to up string down
z-index z-index of menu item number | string 10
duration Transition duration, unit second number | string 0.2
overlay Whether to show overlay boolean true
close-on-click-overlay Whether to close when click overlay boolean true
close-on-click-outside Whether to close when click outside boolean true

DropdownItem Props

Attribute Description Type Default
value Value of current optioncan use v-model number | string -
title Item title string Text of selected option
options Options Option[] []
disabled Whether to disable dropdown item boolean false
lazy-render v2.8.5 Whether to lazy render util opened boolean true
title-class Title class string -
teleport Return the mount node for menu string | Element -

DropdownItem Events

Event Description Arguments
change Triggered select option and value changed value
open Triggered when open menu -
close Triggered when close menu -
opened Triggered when menu opened -
closed Triggered when menu closed -

DropdownItem Slots

Name Description
default Content
title Custom title

DropdownItem Methods

Use ref to get DropdownItem instance and call instance methods

Name Description Attribute Return value
toggle Toggle display show: boolean -

Data Structure of Option

Key Description Type
text Text string
value Value number | string
icon Left icon string