ActionSheet
Install
import { createApp } from 'vue';
import { ActionSheet } from 'vant';
const app = createApp();
app.use(ActionSheet);
Usage
Basic Usage
Use actions
prop to set options of action-sheet.
<van-cell is-link title="Basic Usage" @click="show = true" />
<van-action-sheet v-model:show="show" :actions="actions" @select="onSelect" />
import { ref } from 'vue';
import { Toast } from 'vant';
export default {
setup() {
const show = ref(false);
const actions = [
{ name: 'Option 1' },
{ name: 'Option 2' },
{ name: 'Option 3' },
];
const onSelect = (item) => {
show.value = false;
Toast(item.name);
};
return {
show,
actions,
onSelect,
};
},
};
Show Cancel Button
<van-action-sheet
v-model:show="show"
:actions="actions"
cancel-text="Cancel"
close-on-click-action
@cancel="onCancel"
/>
import { ref } from 'vue';
import { Toast } from 'vant';
export default {
setup() {
const show = ref(false);
const actions = [
{ name: 'Option 1' },
{ name: 'Option 2' },
{ name: 'Option 3' },
];
const onCancel = () => Toast('cancel');
return {
show,
actions,
onCancel,
};
},
};
Show Description
<van-action-sheet
v-model:show="show"
:actions="actions"
cancel-text="Cancel"
description="Description"
close-on-click-action
/>
import { ref } from 'vue';
export default {
setup() {
const show = ref(false);
const actions = [
{ name: 'Option 1' },
{ name: 'Option 2' },
{ name: 'Option 3', subname: 'Description' },
];
return {
show,
actions,
};
},
};
Option Status
<van-action-sheet
v-model:show="show"
:actions="actions"
cancel-text="Cancel"
close-on-click-action
/>
import { ref } from 'vue';
export default {
setup() {
const show = ref(false);
const actions = [
{ name: 'Colored Option', color: '#ee0a24' },
{ name: 'Disabled Option', disabled: true },
{ name: 'Loading Option', loading: true },
];
return {
show,
actions,
};
},
};
Custom Panel
<van-action-sheet v-model:show="show" title="Title">
<div class="content">Content</div>
</van-action-sheet>
<style>
.content {
padding: 16px 16px 160px;
}
</style>
API
Props
Attribute |
Description |
Type |
Default |
v-model:show |
Whether to show ActionSheet |
boolean |
false |
actions |
Options |
Action[] |
[] |
title |
Title |
string |
- |
cancel-text |
Text of cancel button |
string |
- |
description |
Description above the options |
string |
- |
closeable |
Whether to show close icon |
boolean |
true |
close-icon |
Close icon name |
string |
cross |
duration |
Transition duration, unit second |
number | string |
0.3 |
round |
Whether to show round corner |
boolean |
true |
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 |
false |
close-on-click-action |
Whether to close when an action is clicked |
boolean |
false |
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 ActionSheet |
string | Element |
- |
Data Structure of Action
Key |
Description |
Type |
name |
Title |
string |
subname |
Subtitle |
string |
color |
Text color |
string |
className |
className for the option |
string | Array | object |
loading |
Whether to be loading status |
boolean |
disabled |
Whether to be disabled |
boolean |
callback |
Callback function after clicked |
action: Action |
Events
Event |
Description |
Arguments |
select |
Emitted when an option is clicked |
action: Action, index: number |
cancel |
Emitted when the cancel button is clicked |
- |
open |
Emitted when opening ActionSheet |
- |
close |
Emitted when closing ActionSheet |
- |
opened |
Emitted when ActionSheet is opened |
- |
closed |
Emitted when ActionSheet is closed |
- |
click-overlay |
Emitted when overlay is clicked |
event: MouseEvent |
Slots
Name |
Description |
default |
Custom content |
description |
Custom description |
Less Variables
How to use: Custom Theme.
Name |
Default Value |
Description |
@action-sheet-max-height |
80% |
- |
@action-sheet-header-height |
48px |
- |
@action-sheet-header-font-size |
@font-size-lg |
- |
@action-sheet-description-color |
@gray-6 |
- |
@action-sheet-description-font-size |
@font-size-md |
- |
@action-sheet-description-line-height |
@line-height-md |
- |
@action-sheet-item-background |
@white |
- |
@action-sheet-item-font-size |
@font-size-lg |
- |
@action-sheet-item-line-height |
@line-height-lg |
- |
@action-sheet-item-text-color |
@text-color |
- |
@action-sheet-item-disabled-text-color |
@gray-5 |
- |
@action-sheet-subname-color |
@gray-6 |
- |
@action-sheet-subname-font-size |
@font-size-sm |
- |
@action-sheet-subname-line-height |
@line-height-sm |
- |
@action-sheet-close-icon-size |
22px |
- |
@action-sheet-close-icon-color |
@gray-5 |
- |
@action-sheet-close-icon-active-color |
@gray-6 |
- |
@action-sheet-close-icon-padding |
0 @padding-md |
- |
@action-sheet-cancel-text-color |
@gray-7 |
- |
@action-sheet-cancel-padding-top |
@padding-xs |
- |
@action-sheet-cancel-padding-color |
@background-color |
- |
@action-sheet-loading-icon-size |
22px |
- |