/*! For license information please see 2442.25216159.js.LICENSE.txt */ (self.webpackChunk=self.webpackChunk||[]).push([["2442"],{45355:function(s,n,a){"use strict";a.r(n);var t=a("80681");let l=["innerHTML"];n.default={setup:()=>({html:""}),render:()=>((0,t.wg)(),(0,t.iD)("div",{class:"van-doc-markdown-body",innerHTML:'
The menu list that pops down downwards.
\nRegister component globally via app.use
, refer to Component Registration for more registration ways.
import { createApp } from 'vue';\nimport { DropdownMenu, DropdownItem } from 'vant';\n\nconst app = createApp();\napp.use(DropdownMenu);\napp.use(DropdownItem);\n
\n<van-dropdown-menu>\n <van-dropdown-item v-model="value1" :options="option1" />\n <van-dropdown-item v-model="value2" :options="option2" />\n</van-dropdown-menu>\n
\nimport { ref } from 'vue';\n\nexport default {\n setup() {\n const value1 = ref(0);\n const value2 = ref('a');\n const option1 = [\n { text: 'Option1', value: 0 },\n { text: 'Option2', value: 1 },\n { text: 'Option3', value: 2 },\n ];\n const option2 = [\n { text: 'Option A', value: 'a' },\n { text: 'Option B', value: 'b' },\n { text: 'Option C', value: 'c' },\n ];\n\n return {\n value1,\n value2,\n option1,\n option2,\n };\n },\n};\n
\n<van-dropdown-menu ref="menuRef">\n <van-dropdown-item v-model="value" :options="options" />\n <van-dropdown-item title="Title" ref="item">\n <van-cell center title="Title">\n <template #right-icon>\n <van-switch v-model="switch1" />\n </template>\n </van-cell>\n <van-cell center title="Title">\n <template #right-icon>\n <van-switch v-model="switch2" />\n </template>\n </van-cell>\n <div style="padding: 5px 16px;">\n <van-button type="primary" block round @click="onConfirm">\n Confirm\n </van-button>\n </div>\n </van-dropdown-item>\n</van-dropdown-menu>\n
\nimport { ref } from 'vue';\n\nexport default {\n setup() {\n const menuRef = ref(null);\n const itemRef = ref(null);\n const value = ref(0);\n const switch1 = ref(false);\n const switch2 = ref(false);\n const options = [\n { text: 'Option1', value: 0 },\n { text: 'Option2', value: 1 },\n { text: 'Option3', value: 2 },\n ];\n const onConfirm = () => {\n item.value.toggle();\n // or\n // menuRef.value.close();\n };\n\n return {\n menuRef,\n itemRef,\n value,\n switch1,\n switch2,\n options,\n onConfirm,\n };\n },\n};\n
\nUse active-color
prop to custom active color of the title and options.
<van-dropdown-menu active-color="#ee0a24">\n <van-dropdown-item v-model="value1" :options="option1" />\n <van-dropdown-item v-model="value2" :options="option2" />\n</van-dropdown-menu>\n
\nYou can set swipe-threshold
prop to customize threshold number.
<van-dropdown-menu swipe-threshold="4">\n <van-dropdown-item v-model="value1" :options="option1" />\n <van-dropdown-item v-model="value2" :options="option2" />\n <van-dropdown-item v-model="value2" :options="option2" />\n <van-dropdown-item v-model="value2" :options="option2" />\n <van-dropdown-item v-model="value2" :options="option2" />\n</van-dropdown-menu>\n
\n<van-dropdown-menu direction="up">\n <van-dropdown-item v-model="value1" :options="option1" />\n <van-dropdown-item v-model="value2" :options="option2" />\n</van-dropdown-menu>\n
\n<van-dropdown-menu>\n <van-dropdown-item v-model="value1" disabled :options="option1" />\n <van-dropdown-item v-model="value2" disabled :options="option2" />\n</van-dropdown-menu>\n
\nAttribute | \nDescription | \nType | \nDefault | \n
---|---|---|---|
active-color | \nActive color of title and option | \nstring | \n#1989fa | \n
direction | \nExpand direction, can be set to up | \nstring | \ndown | \n
z-index | \nz-index of menu item | \nnumber | string | \n10 | \n
duration | \nTransition duration, unit second | \nnumber | string | \n0.2 | \n
overlay | \nWhether to show overlay | \nboolean | \ntrue | \n
close-on-click-overlay | \nWhether to close when overlay is clicked | \nboolean | \ntrue | \n
close-on-click-outside | \nWhether to close when outside is clicked | \nboolean | \ntrue | \n
swipe-threshold | \nHorizontal scrolling is allowed when the number of items exceeds the threshold and the total width exceeds the width of the menu. | \nnumber | string | \n- | \n
auto-locate | \nWhen the ancestor element is set with a transform, the position of the dropdown menu will be automatically adjusted. | \nboolean | \nfalse | \n
Attribute | \nDescription | \nType | \nDefault | \n
---|---|---|---|
v-model | \nValue of current option | \nnumber | string | \n- | \n
title | \nItem title | \nstring | \nText of selected option | \n
options | \nOptions | \nOption[] | \n[] | \n
disabled | \nWhether to disable dropdown item | \nboolean | \nfalse | \n
lazy-render | \nWhether to lazy render util opened | \nboolean | \ntrue | \n
title-class | \nTitle class | \nstring | Array | object | \n- | \n
teleport | \nSpecifies a target element where DropdownItem will be mounted | \nstring | Element | \n- | \n
Event | \nDescription | \nArguments | \n
---|---|---|
change | \nEmitted select option and value changed | \nvalue: number | string | \n
open | \nEmitted when opening menu | \n- | \n
close | \nEmitted when closing menu | \n- | \n
opened | \nEmitted when menu is opened | \n- | \n
closed | \nEmitted when menu is closed | \n- | \n
Name | \nDescription | \n
---|---|
default | \nContent | \n
title | \nCustom title | \n
Use ref to get DropdownMenu instance and call instance methods.
\nName | \nDescription | \nAttribute | \nReturn value | \n
---|---|---|---|
close | \nClose all dropdown items | \n- | \n- | \n
Use ref to get DropdownItem instance and call instance methods.
\nName | \nDescription | \nAttribute | \nReturn value | \n
---|---|---|---|
toggle | \nToggle display | \nshow?: boolean | \n- | \n
The component exports the following type definitions:
\nimport type {\n DropdownMenuProps,\n DropdownItemProps,\n DropdownItemOption,\n DropdownItemInstance,\n DropdownMenuInstance,\n DropdownMenuDirection,\n} from 'vant';\n
\nDropdownMenuInstance
and DropdownItemInstance
are the types of component instances:
import { ref } from 'vue';\nimport type { DropdownMenuInstance, DropdownItemInstance } from 'vant';\n\nconst dropdownMenuRef = ref<DropdownMenuInstance>();\nconst dropdownItemRef = ref<DropdownItemInstance>();\n\ndropdownMenuRef.value?.close();\ndropdownItemRef.value?.toggle();\n
\nKey | \nDescription | \nType | \n
---|---|---|
text | \nText | \nstring | \n
value | \nValue | \nnumber | string | boolean | \n
disabled | \nWhether to disable option | \nboolean | \n
icon | \nLeft icon | \nstring | \n
The component provides the following CSS variables, which can be used to customize styles. Please refer to ConfigProvider component.
\nName | \nDefault Value | \nDescription | \n
---|---|---|
--van-dropdown-menu-height | \n48px | \n- | \n
--van-dropdown-menu-background | \nvar(--van-background-2) | \n- | \n
--van-dropdown-menu-shadow | \n0 2px 12px fade(var(--van-gray-7), 12) | \n- | \n
--van-dropdown-menu-title-font-size | \n15px | \n- | \n
--van-dropdown-menu-title-text-color | \nvar(--van-text-color) | \n- | \n
--van-dropdown-menu-title-active-text-color | \nvar(--van-primary-color) | \n- | \n
--van-dropdown-menu-title-disabled-text-color | \nvar(--van-text-color-2) | \n- | \n
--van-dropdown-menu-title-padding | \n0 var(--van-padding-xs) | \n- | \n
--van-dropdown-menu-title-line-height | \nvar(--van-line-height-lg) | \n- | \n
--van-dropdown-menu-option-active-color | \nvar(--van-primary-color) | \n- | \n
--van-dropdown-menu-option-disabled-color | \nvar(--van-text-color-3) | \n- | \n
--van-dropdown-menu-content-max-height | \n80% | \n- | \n
--van-dropdown-item-z-index | \n10 | \n- | \n