Skip to content

ActionSheet - Vant 4

ActionSheet

📋 Present choices beautifully with smooth bottom-up action sheets!

Intro

ActionSheet is your elegant solution for presenting contextual options to users! This sleek bottom-sliding panel creates an intuitive way to offer multiple choices without cluttering your interface. Perfect for sharing options, selection menus, or any scenario where you need to present actions in a clean, mobile-friendly way! 🎯✨

Install

Ready to add some smooth sliding action to your app? Let's get ActionSheet registered and ready to impress your users! Use app.use() for global registration, or explore our Component Registration guide for more flexible options! 🚀

js
import { createApp } from'vue'; import { ActionSheet } from'vant'; const app = createApp(); app.use(ActionSheet);

Usage

Basic Usage - Your First Action Sheet! 🎉

Creating an action sheet is as simple as passing an array of actions! Each option becomes a tappable choice that slides up beautifully from the bottom. Watch how easy it is to give users meaningful options!

html
js
import { ref } from'vue'; import { showToast } from'vant'; exportdefault { setup() { const show = ref(false); const actions = [ { name: 'Option 1' }, { name: 'Option 2' }, { name: 'Option 3' }, ]; constonSelect = (item) => { show.value = false; showToast(item.name); }; return { show, actions, onSelect, }; }, };

Show Icon - Visual Clarity! 🎨

Make your options instantly recognizable by adding icons! The icon field transforms plain text options into visually appealing choices that users can understand at a glance. Perfect for actions like share, save, or delete!

html
js
import { ref } from'vue'; import { showToast } from'vant'; exportdefault { setup() { const show = ref(false); const actions = [ { name: 'Option 1', icon: 'cart-o' }, { name: 'Option 2', icon: 'shop-o' }, { name: 'Option 3', icon: 'star-o' }, ]; constonSelect = (item) => { show.value = false; showToast(item.name); }; return { show, actions, onSelect, }; }, };

Show Cancel Button - Always Provide an Exit! 🚪

Give users a way out! Adding a cancel button ensures users never feel trapped in your action sheet. It's a simple addition that greatly improves user experience and follows mobile UI best practices.

html
js
import { ref } from'vue'; import { showToast } from'vant'; exportdefault { setup() { const show = ref(false); const actions = [ { name: 'Option 1' }, { name: 'Option 2' }, { name: 'Option 3' }, ]; constonCancel = () => showToast('cancel'); return { show, actions, onCancel, }; }, };

Show Description - Context is King! 📝

Help users make informed decisions by adding descriptions to your action sheet. Perfect for explaining what each action does or providing additional context about the current situation.

html
js
import { ref } from'vue'; exportdefault { setup() { const show = ref(false); const actions = [ { name: 'Option 1' }, { name: 'Option 2' }, { name: 'Option 3', subname: 'Description' }, ]; return { show, actions, }; }, };

Option Status - Smart State Management! ⚡

Control how your options behave with powerful status features! Color-code important actions, disable unavailable options, or show loading states for async operations. Your action sheet becomes truly interactive!

html
js
import { ref } from'vue'; exportdefault { 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 - Unleash Your Creativity! 🎨

Need something beyond standard options? Create completely custom content within your action sheet! Perfect for complex forms, rich media, or any unique interaction pattern your app requires.

html

API

Props

AttributeDescriptionTypeDefault
v-model:showWhether to show ActionSheetbooleanfalse
actionsOptionsActionSheetAction[][]
titleTitlestring-
cancel-textText of cancel buttonstring-
descriptionDescription above the optionsstring-
closeableWhether to show close iconbooleantrue
close-iconClose icon namestringcross
durationTransition duration, unit second*numberstring*
z-indexSet the z-index to a fixed value*numberstring*
roundWhether to show round cornerbooleantrue
overlayWhether to show overlaybooleantrue
overlay-classCustom overlay class*stringArray
overlay-styleCustom overlay styleobject-
lock-scrollWhether to lock background scrollbooleantrue
lazy-renderWhether to lazy render util appearedbooleantrue
close-on-popstateWhether to close when popstatebooleantrue
close-on-click-actionWhether to close when an action is clickedbooleanfalse
close-on-click-overlayWhether to close when overlay is clickedbooleantrue
safe-area-inset-bottomWhether to enable bottom safe area adaptationbooleantrue
teleportSpecifies a target element where ActionSheet will be mounted*stringElement*
before-closeCallback function before close*(action: string) => booleanPromise<boolean>*

Data Structure of ActionSheetAction

KeyDescriptionType
nameTitlestring
subnameSubtitlestring
colorText colorstring
icon v4.8.6Icon name or URLstring
classNameclassName for the option*string
loadingWhether to be loading statusboolean
disabledWhether to be disabledboolean
callbackCallback function after clickedaction: ActionSheetAction

Events

EventDescriptionArguments
selectEmitted when an option is clickedaction: ActionSheetAction, index: number
cancelEmitted when the cancel button is clicked-
openEmitted when opening ActionSheet-
closeEmitted when closing ActionSheet-
openedEmitted when ActionSheet is opened-
closedEmitted when ActionSheet is closed-
click-overlayEmitted when overlay is clickedevent: MouseEvent

Slots

NameDescriptionSlotProps
defaultCustom content
descriptionCustom description above the options
cancelCustom the content of cancel button
actionCustom the content of action{ action: ActionSheetAction, index: number }

Types

The component exports the following type definitions:

ts
importtype { ActionSheetProps, ActionSheetAction } from'vant';

Theming

CSS Variables

The component provides the following CSS variables, which can be used to customize styles. Please refer to ConfigProvider component.

NameDefault ValueDescription
--van-action-sheet-max-height80%-
--van-action-sheet-header-height48px-
--van-action-sheet-header-font-sizevar(--van-font-size-lg)-
--van-action-sheet-description-colorvar(--van-text-color-2)-
--van-action-sheet-description-font-sizevar(--van-font-size-md)-
--van-action-sheet-description-line-heightvar(--van-line-height-md)-
--van-action-sheet-item-backgroundvar(--van-background-2)-
--van-action-sheet-item-font-sizevar(--van-font-size-lg)-
--van-action-sheet-item-line-heightvar(--van-line-height-lg)-
--van-action-sheet-item-text-colorvar(--van-text-color)-
--van-action-sheet-item-disabled-text-colorvar(--van-text-color-3)-
--van-action-sheet-item-icon-size18px-
--van-action-sheet-item-icon-margin-rightvar(--van-padding-xs)-
--van-action-sheet-subname-colorvar(--van-text-color-2)-
--van-action-sheet-subname-font-sizevar(--van-font-size-sm)-
--van-action-sheet-subname-line-heightvar(--van-line-height-sm)-
--van-action-sheet-close-icon-size22px-
--van-action-sheet-close-icon-colorvar(--van-gray-5)-
--van-action-sheet-close-icon-padding0 var(--van-padding-md)-
--van-action-sheet-cancel-text-colorvar(--van-gray-7)-
--van-action-sheet-cancel-padding-topvar(--van-padding-xs)-
--van-action-sheet-cancel-padding-colorvar(--van-background)-
--van-action-sheet-loading-icon-size22px-

Explore more components and features to enhance your mobile app experience:

  • Popup - Learn about popup components and overlay patterns
  • Dialog - Master dialog components for confirmations and alerts
  • Toast - Discover toast notifications for user feedback
  • Icon - Explore the complete icon library for your action items
  • Button - Understand button components and interactions
  • ConfigProvider - Customize themes and global configurations
  • Advanced Usage - Component registration and advanced techniques
  • Vant 4 Overview - Explore all Vant 4 features and components

Enterprise-level mobile solution based on Vant