Skip to content

ActionSheet 动作面板

ActionSheet 组件是从页面底部弹出的模态框,为用户呈现一组与当前情境相关的选项。

基础用法

通过v-model:show控制弹框的显示隐藏,通过items属性定义一组选项。
如果close-on-click-action属性为真,则用户点击选项后自动关闭弹框。
通过选项的icon属性可以设置选项的图标。
通过description属性可以在面板上方显示一行描述文本,通过选项的subTitle属性可以为选项设置副标题。
如果将alignment属性设置为left则文本居左对齐。
如果将show-cancel属性设置为false则可以将面板下方的取消按钮隐藏。

选项状态

当选项的disabled属性为真时,选项被禁用。

自定义插槽

通过item插槽可以自定义选项的显示效果,通过默认插槽可以自定义整个面板的显示效果。

类型

typescript
/** 动作面板选项 */
interface ActionSheetItem {
  /** 选项标题 */
  title?: string;

  /** 选项副标题,显示在标题下方 */
  subTitle?: string;

  /** 图标名,图标显示在标题左侧 */
  icon?: string;

  /** 自定义颜色 */
  color?: string;

  /** 是否处于禁用状态 */
  disabled?: boolean;

  /** 自定义类名 */
  className?: string;

  [key: string]: any;
}

属性

属性名类型默认值说明
showbooleanfalse是否显示动作面板,支持语法糖v-model:show
itemsArray as ActionSheetItem[][]动作面板的选项列表
descriptionstring--显示在面板顶部的描述信息
alignment'center' | 'left''center'文本的水平对齐方式
showCancelbooleantrue是否显示取消按钮
cancelTextstring--取消按钮的文本
closeOnClickOverlaybooleantrue是否在点击遮罩后关闭
closeOnClickActionbooleanfalse是否在点击选项后关闭
roundbooleantrue是否显示圆角
zIndexnumber--z-index 层级
teleportstring | Element--指定Teleport组件所挂载的节点
overlaybooleantrue是否显示遮罩层
overlayClassstring--自定义遮罩层类名
overlayStylestring--自定义遮罩层样式
lockScrollbooleantrue是否锁定背景滚动
durationnumber0.3动画执行时长,单位s,为0时禁用动画

事件

事件名类型说明
selectEventEmitter<{ item: ActionSheetItem; index: number }>选中事件,点击非禁用状态的选项时触发
cancelEventEmitter<void>取消事件,点击取消按钮时触发

插槽

名称说明
item选项
header面板头部
default面板内容

CSS 变量

名称默认值说明
--fm-action-sheet-max-height80%--
--fm-action-sheet-border-radius12px--
--fm-action-sheet-description-colorvar(--fm-gray-5)--
--fm-action-sheet-description-line-height22px--
--fm-action-sheet-description-font-sizevar(--fm-font-size-md)--
--fm-action-sheet-description-padding12px 16px--
--fm-action-sheet-item-default-backgroundvar(--fm-background-white)--
--fm-action-sheet-item-active-background#f2f3f5--
--fm-action-sheet-item-padding13px 16px--
--fm-action-sheet-item-text-color#1a1a1a--
--fm-action-sheet-item-disabled-text-color#bdbdbd--
--fm-action-sheet-item-subtitle-colorvar(--fm-gray-5)--
--fm-action-sheet-item-icon-size18px--
--fm-action-sheet-item-icon-margin-right8px--
--fm-action-sheet-item-title-font-sizevar(--fm-font-size-lg)--
--fm-action-sheet-item-title-line-height24px--
--fm-action-sheet-item-subtitle-font-sizevar(--fm-font-size-sm)--
--fm-action-sheet-item-subtitle-line-height18px--
--fm-action-sheet-item-subtitle-margin-top2px--
--fm-action-sheet-footer-gap-color#f5f5f5--
--fm-action-sheet-divider-color#e7e7e7--
--fm-action-sheet-cancel-height48px--
--fm-action-sheet-cancel-color#1a1a1a--
--fm-action-sheet-cancel-font-sizevar(--fm-font-size-lg)--
--fm-action-sheet-cancel-font-weight500--