Skip to content

Action Sheet 动作面板

从底部弹出的轻量级操作面板,适合“选择操作”“危险操作确认前二次选择”“分享菜单”等移动端场景。

基础用法

vue
<script setup lang="ts">
import { ref } from 'vue'

const visible = ref(false)
const actions = [
  { name: '编辑' },
  { name: '删除', color: '#f56c6c' },
]
</script>

<template>
  <lk-button @click="visible = true">显示动作面板</lk-button>

  <lk-action-sheet
    v-model="visible"
    :actions="actions"
  />
</template>

select 会返回 { action, index, event },适合在异步完成后再手动关闭。

带标题与描述

vue
<lk-action-sheet
  v-model="visible"
  title="请选择操作"
  description="该操作将立即生效,请谨慎确认"
  :actions="actions"
/>

禁用项与加载态

vue
<script setup lang="ts">
const actions = [
  { name: '普通操作' },
  { name: '处理中', loading: true },
  { name: '暂不可用', disabled: true },
]
</script>

<template>
  <lk-action-sheet v-model="visible" :actions="actions" />
</template>

点击选项后不自动关闭

适合需要先执行异步逻辑,再手动关闭面板的场景。

vue
<script setup lang="ts">
import { ref } from 'vue'

const visible = ref(false)
const actions = [{ name: '提交审核' }]

function handleSelect() {
  // 先执行业务逻辑
  setTimeout(() => {
    visible.value = false
  }, 300)
}
</script>

<template>
  <lk-action-sheet
    v-model="visible"
    :actions="actions"
    :close-on-click-action="false"
    @select="handleSelect"
  />
</template>

动画配置

vue
<lk-action-sheet
  v-model="visible"
  :actions="actions"
  animation="quick"
/>

<lk-action-sheet
  v-model="visible"
  :actions="actions"
  animation-type="fade-up"
  :duration="320"
  easing="ease-out"
/>

推荐示例

1) 直接复用项目 Demo(推荐)

vue
<script setup lang="ts">
import ActionSheetDemo from '@/components/demos/action-sheet-demo.vue'
</script>

<template>
  <ActionSheetDemo />
</template>

2) 在业务页中按需组合

vue
<template>
  <view class="page-demo">
    <lk-action-sheet />
  </view>
</template>

API

Props

参数说明类型默认值
modelValue是否显示,支持 v-modelbooleanfalse
zIndex弹层层级number1000
title标题string''
description描述文案string''
actions操作项列表Action[][]
cancelText取消按钮文字;传空字符串可隐藏取消按钮string'取消'
closeOnClickAction点击选项后是否自动关闭booleantrue
safeArea是否适配底部安全区booleantrue
animation动画预设名称keyof ANIMATION_PRESETSundefined
animationType自定义动画类型TransitionConfig['name']undefined
duration动画时长numberundefined
delay动画延迟numberundefined
easing动画缓动函数TransitionConfig['easing']undefined

Action

字段说明类型默认值
name主文案string
sub次级说明stringundefined
disabled是否禁用booleanundefined
color文字颜色stringundefined
loading是否显示加载态booleanundefined

Events

事件名说明回调参数
update:modelValue显示状态变化(value: boolean)
select点击可用操作项并完成选择({ action, index, event })
click-action点击可用操作项时触发,早于 select({ action, index, event })
cancel点击取消按钮并关闭面板(event?: Event)
click-cancel点击取消按钮时触发,早于 cancel(event?: Event)
click-overlay点击遮罩层时触发(event?: Event)
open面板打开时触发()
close面板关闭时触发()
after-enter进入动画结束后触发()
after-leave离开动画结束后触发()

Slots

当前版本未提供具名插槽,内容由 actions 数据驱动。

使用建议

TIP

如果你的场景是标准确认框,请优先使用 lk-modal;如果需要自定义复杂内容区域,请优先使用 lk-popup

基于 MIT 协议开源 · 粤ICP备2022114240号-3

Action Sheet 动作面板

正在连接预览服务...

请先运行 pnpm run dev:h5