Skip to content

ActionSheet 动作面板

从底部弹出的动作菜单面板。

组件类型

基本用法

通过 v-model 设置显示隐藏。

actions 类型为 Array,数组内部对象结构如下:

参数说明类型
name选项名称string
description描述信息string
color颜色string
html
<wd-toast />
<wd-button @click="showActions">弹出菜单</wd-button>
<wd-action-sheet v-model="show" :actions="actions" @close="close" @select="select" />
typescript
const show = ref<boolean>(false)
const actions = ref([
  {
    name: '选项1'
  },
  {
    name: '选项2'
  },
  {
    name: '选项3',
    description: '描述信息'
  }
])

function showActions() {
  show.value = true
}

function close() {
  show.value = false
}

const toast = useToast()

function select({ item, index }) {
  toast.show(`当前选中项: ${item.name}, 下标: ${index}`)
}

自定义单行面板

自定义单行面板时,panels 类型为一维数组,数组内部对象结构如下:

参数说明类型
icon图标名或图片地址string
title标题string
html
<wd-button @click="showActions">弹出菜单</wd-button>
<wd-action-sheet v-model="show" :panels="panels" @close="close" @select="select" />
typescript
const show = ref<boolean>(false)
const panels = ref([
  {
    icon: 'user',
    title: '微信好友'
  },
  {
    icon: 'share-internal',
    title: '朋友圈'
  },
  {
    icon: 'message',
    title: 'QQ 好友'
  },
  {
    icon: 'star-fill',
    title: '收藏'
  },
  {
    icon: 'share-internal',
    title: '更多分享'
  },
  {
    icon: 'user-add',
    title: '邀请好友'
  }
])
function showActions() {
  show.value = true
}

function close() {
  show.value = false
}
const toast = useToast()

function select({ item, index }) {
  toast.show(`当前选中项: ${item.title}, 下标: ${index}`)
}

自定义多行面板

自定义多行面板时,panels 类型为多维数组,每个数组内部对象结构如下:

参数说明类型
icon图标名或图片地址string
title标题string
html
<wd-button @click="showActions">弹出菜单</wd-button>
<wd-action-sheet v-model="show" :panels="panels" @close="close" @select="select1" />
typescript
const show = ref<boolean>(false)
const panels = ref([
  [
    {
      icon: 'user',
      title: '微信好友'
    },
    {
      icon: 'share-internal',
      title: '朋友圈'
    },
    {
      icon: 'message',
      title: 'QQ 好友'
    },
    {
      icon: 'star-fill',
      title: '收藏'
    },
    {
      icon: 'user-add',
      title: '邀请'
    },
    {
      icon: 'share-external',
      title: '外部分享'
    },
    {
      icon: 'qrcode',
      title: '生成二维码'
    },
    {
      icon: 'save',
      title: '保存图片'
    }
  ],
  [
    {
      icon: 'file-image',
      title: '图片'
    },
    {
      icon: 'download',
      title: '下载'
    },
    {
      icon: 'copy',
      title: '复制链接'
    }
  ]
])

function showActions() {
  show.value = true
}

function close() {
  show.value = false
}
const toast = useToast()

function select1({ item, rowIndex, colIndex }) {
  toast.show(`当前选中项: ${item.title}, 行下标: ${rowIndex}, 列下标: ${colIndex}`)
}

组件状态

选项状态

可以设置颜色、禁用、加载等状态。

html
<wd-button @click="showActions">弹出菜单</wd-button>
<wd-action-sheet v-model="show" :actions="actions" @close="close" />
typescript
const show = ref<boolean>(false)
const actions = ref([
  {
    name: '颜色',
    color: '#0083ff'
  },
  {
    name: '禁用',
    disabled: true
  },
  {
    loading: true
  }
])
function showActions() {
  show.value = true
}

function close() {
  show.value = false
}

组件变体

取消按钮

设置 cancel-text 取消按钮文案,展示取消按钮。

html
<wd-action-sheet v-model="show" :actions="actions" @close="close" cancel-text="取消" />

标题

设置 title 展示标题。

html
<wd-action-sheet v-model="show" title="标题" @close="close">
  <view style="padding: 15px 15px 150px 15px;">内容</view>
</wd-action-sheet>

Attributes

参数说明类型默认值
v-model设置菜单显示隐藏booleanfalse
actions菜单选项,详见下方 Action 数据结构Action[][]
panels自定义宫格面板项,支持一维 Panel[] 与二维 Panel[][](多行)Array<Panel | Panel[]>[]
title标题string-
cancel-text取消按钮文案string-
close-on-click-action点击选项后是否关闭菜单booleantrue
close-on-click-modal点击遮罩是否关闭booleantrue
duration动画持续时间(ms)number200
z-index菜单层级number10
lazy-render弹层内容懒渲染,触发展示时才渲染内容booleantrue
safe-area-inset-bottom弹出面板是否设置底部安全距离(iPhone X 类型机型)booleantrue
root-portal是否从页面中脱离出来(H5: teleport,App: renderjs,小程序: root-portal)booleanfalse
custom-title-class标题区域自定义类名string-
custom-class根节点自定义类名string-
custom-style根节点自定义样式string-

Events

事件名称说明参数
select点击选项时触发菜单选项或自定义面板一维数组:{ item, index };自定义面板二维数组:{ item, rowIndex, colIndex }
enter打开动画开始时触发-
after-enter打开动画结束时触发-
leave关闭动画开始时触发-
after-leave关闭动画结束时触发-
close面板关闭时触发-
click-modal点击遮罩时触发-
cancel点击取消按钮时触发-

Action 数据结构

键名说明类型
name选项名称string
description描述信息string
color颜色string
disabled禁用boolean
loading加载中状态boolean

Panel 数据结构

键名说明类型
icon图标名或图片地址string
title标题内容string

Slots

name说明参数
default自定义内容区,传入后会覆盖默认 actions/panels 渲染-
close自定义标题栏右侧关闭区域{ close }

主题定制

CSS 变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 全局配置

名称默认值描述
--wot-action-sheet-bg$filled-oppo底部弹层背景色
--wot-action-sheet-radius$radius-large底部弹层圆角
--wot-action-sheet-action-bg$filled-oppo操作项背景色
--wot-action-sheet-action-font-size$typography-title-size-main操作项字体大小
--wot-action-sheet-action-line-height$typography-title-line--height-size-main操作项行高
--wot-action-sheet-action-color$text-main操作项文字颜色
--wot-action-sheet-action-padding$padding-extra-loose $padding-loose操作项内边距
--wot-action-sheet-gap-bg$filled-bottom取消按钮与操作项的间隔背景色
--wot-action-sheet-cancel-bg$filled-oppo取消按钮背景色
--wot-action-sheet-cancel-font-size$typography-title-size-main取消按钮字体大小
--wot-action-sheet-cancel-line-height$typography-title-line--height-size-main取消按钮行高
--wot-action-sheet-cancel-color$text-main取消按钮文字颜色
--wot-action-sheet-cancel-padding$padding-extra-loose $padding-loose取消按钮内边距
--wot-action-sheet-gap-height$spacing-tight取消按钮顶部外边距
--wot-action-sheet-description-font-size$typography-body-size-main描述文本字体大小
--wot-action-sheet-description-line-height$typography-body-line--height-size-main描述文本行高
--wot-action-sheet-description-color$text-auxiliary描述文本颜色
--wot-action-sheet-description-margin-top$spacing-tight描述文本顶部外边距
--wot-action-sheet-panel-bg$filled-oppo面板区域背景色
--wot-action-sheet-panels-wrap-padding$padding-main $padding-zero面板容器内边距
--wot-action-sheet-panels-padding$padding-zero $padding-main面板列表内边距
--wot-action-sheet-panel-width$n-88单个面板宽度
--wot-action-sheet-panel-padding$padding-main $padding-zero单个面板内边距
--wot-action-sheet-panel-img-size$n-24面板图片尺寸
--wot-action-sheet-panel-img-spacing$spacing-zero auto $spacing-tight面板图片外边距
--wot-action-sheet-panel-img-radius$radius-main面板图片圆角
--wot-action-sheet-panel-title-font-size$typography-label-size-main面板标题字体大小
--wot-action-sheet-panel-title-line-height$typography-label-line--height-size-main面板标题行高
--wot-action-sheet-panel-title-color$text-auxiliary面板标题颜色
--wot-action-sheet-title-bg$filled-oppo标题背景色
--wot-action-sheet-title-color$text-main标题文字颜色
--wot-action-sheet-title-height$n-56标题区域高度
--wot-action-sheet-title-font-size$typography-title-size-main标题字体大小
--wot-action-sheet-title-line-height$typography-title-line--height-size-main标题行高
--wot-action-sheet-title-font-weight$font-weight-medium标题字重
--wot-action-sheet-close-right$spacing-loose关闭图标右侧偏移
--wot-action-sheet-close-color$icon-secondary关闭图标颜色
--wot-action-sheet-close-font-size$n-24关闭图标尺寸
--wot-action-sheet-active-bg$filled-content激活态背景色
--wot-action-sheet-disabled-color$text-disabled禁用态文字颜色
--wot-action-sheet-loading-size$n-20加载图标尺寸

源代码

文档
组件

Released under the MIT License.

Released under the MIT License.