Appearance
xtf-action-sheet
组件说明
xtf-action-sheet 是底部动作面板,用于让用户从一组操作中选择或取消。当前实现读取 actions 数据、由 show 控制显示、通过 update:show 等事件反馈交互。
- 实际 Demo 路由:
#/pages/components/xtf-action-sheet/index - Demo 源码
基础用法
1. 最小可用
提供能够直接看到或操作组件的最少业务内容。
vue
<template>
<view class="doc-minimum">
<XtfActionSheet title="账单详情" :show="true" />
</view>
</template>
<script setup lang="uts">
import XtfActionSheet from "@/uni_modules/xtf-linkuiunix/components/xtf-action-sheet/xtf-action-sheet.uvue"
</script>
<style>
.doc-minimum { display: flex; flex-direction: column; padding: 24rpx; }
</style>2. 核心数据与主要事件
使用组件真实数据入口,并记录当前源码声明的主要事件。
vue
<template>
<view class="doc-core">
<XtfActionSheet title="账单详情" :show="true" :actions="fixture" @open="onPrimaryEvent" />
</view>
</template>
<script setup lang="uts">
import XtfActionSheet from "@/uni_modules/xtf-linkuiunix/components/xtf-action-sheet/xtf-action-sheet.uvue"
const fixture = [{ key: 'edit', label: '编辑', icon: 'edit' }, { key: 'delete', label: '删除', danger: true }] as Array<any>
function onPrimaryEvent(payload: any): void { console.log("xtf-action-sheet:open", payload) }
</script>
<style>
.doc-core { display: flex; flex-direction: column; padding: 24rpx; }
</style>3. 动态 show 状态
运行时切换 show,观察组件对应状态变化。
vue
<template>
<view class="doc-dynamic">
<XtfActionSheet title="账单详情" :show="state" />
<button class="doc-action-button" @click="toggleState">切换 show</button>
<text class="doc-state-text">show: {{ state }}</text>
</view>
</template>
<script setup lang="uts">
import XtfActionSheet from "@/uni_modules/xtf-linkuiunix/components/xtf-action-sheet/xtf-action-sheet.uvue"
import { ref } from "vue"
const state = ref(true)
function toggleState(): void { state.value = !state.value; console.log("show", state.value) }
</script>
<style>
.doc-dynamic { display: flex; flex-direction: column; padding: 24rpx; }
.doc-action-button { margin-top: 16rpx; }
.doc-state-text { margin-top: 12rpx; color: #475569; font-size: 24rpx; }
</style>4. Manager 服务调用
先挂载 service 宿主,再调用对应 manager 的实际显示 API。
vue
<template>
<view class="doc-service">
<XtfActionSheet title="账单详情" service />
<button class="doc-action-button" @click="openService">服务式调用</button>
</view>
</template>
<script setup lang="uts">
import { actionSheetManager } from "@/uni_modules/xtf-linkuiunix/components/xtf-action-sheet/service.uts"
import XtfActionSheet from "@/uni_modules/xtf-linkuiunix/components/xtf-action-sheet/xtf-action-sheet.uvue"
function openService(): void { actionSheetManager.show({ title: '账单操作', actions: [{ label: '编辑', key: 'edit' }, { label: '删除', key: 'delete', danger: true }] }); console.log("actionSheetManager 已调用") }
</script>
<style>
.doc-service { display: flex; flex-direction: column; padding: 24rpx; }
.doc-action-button { margin-top: 16rpx; }
</style>全部属性
| 属性 | 源码类型 | withDefaults 默认值 | 实际行为 / 范围 | 适用范围 |
|---|---|---|---|---|
show | boolean | false | 参与组件运行逻辑;源码在 3 处读取该值;消费位置:script 行 143、script 行 156、service.uts 行 38 | 需要控制显示、可用性或交互状态时设置。 |
title | string | "" | 参与组件运行逻辑;源码在 3 处读取该值;消费位置:script 行 93、template 行 6 | 需要提供业务文案或图标内容时设置。 |
description | string | "" | 参与组件运行逻辑;源码在 3 处读取该值;消费位置:script 行 93、template 行 7、template 行 8 | 需要提供业务文案或图标内容时设置。 |
actions | XtfActionSheetAction[] | () => [] as XtfActionSheetAction[] | 参与组件运行逻辑;源码在 3 处读取该值;消费位置:script 行 94、template 行 17、template 行 32 | 数据驱动或选项渲染场景。 |
cancelText | string | "取消" | 设置对应区域的显示文案;消费位置:script 行 95 | 需要提供业务文案或图标内容时设置。 |
showCancel | boolean | true | 开关对应显示或交互行为;消费位置:template 行 45 | 需要控制显示、可用性或交互状态时设置。 |
showClose | boolean | false | 开关对应显示或交互行为;消费位置:script 行 93、template 行 10 | 需要控制显示、可用性或交互状态时设置。 |
overlay | boolean | true | 参与组件运行逻辑;源码在 1 处读取该值;消费位置:template 行 3 | 需要控制显示、可用性或交互状态时设置。 |
overlayStyle | UTSJSONObject | () => ({} as UTSJSONObject) | 覆盖或追加对应内部区域的样式对象;消费位置:script 行 109 | 需要调整布局或视觉表现时设置。 |
closeOnClickOverlay | boolean | true | 开关对应显示或交互行为;消费位置:script 行 304 | 需要覆盖组件默认业务值时设置。 |
closeOnClickAction | boolean | true | 开关对应显示或交互行为;消费位置:script 行 312 | 需要覆盖组件默认业务值时设置。 |
beforeClose | (context: XtfActionSheetCloseContext) => boolean | Promise<boolean> | null | 提供源码调用的业务回调,参数和返回值以类型列为准;消费位置:script 行 233 | 需要接入业务守卫、转换或过滤逻辑时设置。 |
round | boolean | true | 参与组件运行逻辑;源码在 1 处读取该值;消费位置:script 行 97 | 需要覆盖组件默认业务值时设置。 |
sideGap | number | 0 | 参与组件运行逻辑;源码在 2 处读取该值;消费位置:script 行 112、script 行 113 | 需要调整布局或视觉表现时设置。 |
sideGapLeft | number | -1 | 参与组件运行逻辑;源码在 2 处读取该值;消费位置:script 行 112 | 需要覆盖组件默认业务值时设置。 |
sideGapRight | number | -1 | 参与组件运行逻辑;源码在 2 处读取该值;消费位置:script 行 113 | 需要覆盖组件默认业务值时设置。 |
zIndex | number | 2200 | 参与组件运行逻辑;源码在 1 处读取该值;消费位置:script 行 103 | 需要覆盖组件默认业务值时设置。 |
visibleCount | number | 0 | 参与组件运行逻辑;源码在 4 处读取该值;消费位置:script 行 94、script 行 170 | 需要覆盖组件默认业务值时设置。 |
layout | "card" | "native" | "compact" | "system" | "card" | 参与组件运行逻辑;源码在 13 处读取该值;可选值:card / native / compact / system;消费位置:script 行 96、script 行 97、script 行 98、script 行 99 | 需要调整布局或视觉表现时设置。 |
customClass | string | "" | 参与组件运行逻辑;源码在 1 处读取该值;消费位置:script 行 97 | 需要调整布局或视觉表现时设置。 |
customStyle | UTSJSONObject | () => ({} as UTSJSONObject) | 参与组件运行逻辑;源码在 1 处读取该值;消费位置:template 行 4 | 需要调整布局或视觉表现时设置。 |
headerClass | string | "" | 追加到对应内部区域的 class;消费位置:script 行 98 | 需要调整布局或视觉表现时设置。 |
headerStyle | UTSJSONObject | () => ({} as UTSJSONObject) | 覆盖或追加对应内部区域的样式对象;消费位置:template 行 5 | 需要调整布局或视觉表现时设置。 |
bodyClass | string | "" | 追加到对应内部区域的 class;消费位置:script 行 99 | 需要调整布局或视觉表现时设置。 |
bodyStyle | UTSJSONObject | () => ({} as UTSJSONObject) | 覆盖或追加对应内部区域的样式对象;消费位置:template 行 16、template 行 31 | 需要调整布局或视觉表现时设置。 |
footerClass | string | "" | 追加到对应内部区域的 class;消费位置:script 行 100 | 需要调整布局或视觉表现时设置。 |
footerStyle | UTSJSONObject | () => ({} as UTSJSONObject) | 覆盖或追加对应内部区域的样式对象;消费位置:template 行 45 | 需要调整布局或视觉表现时设置。 |
titleClass | string | "" | 追加到对应内部区域的 class;消费位置:template 行 6 | 需要调整布局或视觉表现时设置。 |
titleStyle | UTSJSONObject | () => ({} as UTSJSONObject) | 覆盖或追加对应内部区域的样式对象;消费位置:template 行 6 | 需要调整布局或视觉表现时设置。 |
descriptionClass | string | "" | 追加到对应内部区域的 class;消费位置:template 行 8 | 需要调整布局或视觉表现时设置。 |
descriptionStyle | UTSJSONObject | () => ({} as UTSJSONObject) | 覆盖或追加对应内部区域的样式对象;消费位置:template 行 8 | 需要调整布局或视觉表现时设置。 |
cancelButtonClass | string | "" | 追加到对应内部区域的 class;消费位置:template 行 46 | 需要调整布局或视觉表现时设置。 |
cancelButtonStyle | UTSJSONObject | () => ({} as UTSJSONObject) | 覆盖或追加对应内部区域的样式对象;消费位置:template 行 46 | 需要调整布局或视觉表现时设置。 |
itemClass | string | "" | 追加到对应内部区域的 class;消费位置:script 行 216 | 需要调整布局或视觉表现时设置。 |
itemStyle | UTSJSONObject | () => ({} as UTSJSONObject) | 覆盖或追加对应内部区域的样式对象;消费位置:script 行 220 | 需要调整布局或视觉表现时设置。 |
service | boolean | false | 参与组件运行逻辑;源码在 6 处读取该值;消费位置:script 行 238、service.uts 行 30、service.uts 行 38 | 需要控制显示、可用性或交互状态时设置。 |
animation | string | "slide-up" | 参与组件运行逻辑;源码在 4 处读取该值;消费位置:script 行 241、script 行 247、script 行 248、script 行 249 | 需要覆盖组件默认业务值时设置。 |
duration | number | 0 | 参与组件运行逻辑;源码在 2 处读取该值;消费位置:script 行 241 | 需要覆盖组件默认业务值时设置。 |
overlayBlur | number | 0 | 参与组件运行逻辑;源码在 3 处读取该值;消费位置:script 行 107 | 需要控制显示、可用性或交互状态时设置。 |
lockScroll | boolean | true | 参与组件运行逻辑;源码在 1 处读取该值;消费位置:script 行 126 | 需要覆盖组件默认业务值时设置。 |
XtfActionSheetAction 数据结构
| 字段 | 源码类型 | 字段语义 |
|---|---|---|
key | string | 稳定渲染标识 |
name | string | 名称或兼容显示字段 |
label | string | 显示文字 |
description | string | 补充说明 |
desc | string | 简短说明 |
icon | string | 图标名称 |
color | string | 源码声明的业务扩展字段;当前实现未提供更具体语义。 |
iconColor | string | 源码声明的业务扩展字段;当前实现未提供更具体语义。 |
textStyle | UTSJSONObject | 源码声明的业务扩展字段;当前实现未提供更具体语义。 |
danger | boolean | 是否使用危险语义 |
disabled | boolean | 是否禁止该项交互 |
XtfActionSheetCloseContext 数据结构
| 字段 | 源码类型 | 字段语义 |
|---|---|---|
type | string | 类型标识 |
action | XtfActionSheetAction | 业务动作标识 |
index | number | 源码声明的业务扩展字段;当前实现未提供更具体语义。 |
事件
| 事件名称 | 源码触发边界 | 回调参数 | 参数说明 |
|---|---|---|---|
update:show | updateShow 内触发(script 行 238);参数表达式:value;前置 guard:!current() | (...args: any[]) | 表中参数表达式来自当前源码直接调用点;禁用、守卫失败或未进入该函数分支时不会触发。 |
open | openPanel 内触发(script 行 276);参数表达式:无回调参数 | (...args: any[]) | 表中参数表达式来自当前源码直接调用点;禁用、守卫失败或未进入该函数分支时不会触发。 |
opened | playEnter 内触发(script 行 259);参数表达式:无回调参数;前置 guard:!mounted || motionId.value != enterMotionId || !rendered.value、duration == 0setup 内触发(script 行 265);参数表达式:无回调参数;前置 guard:!mounted || motionId.value != enterMotionId || !rendered.valueplayEnter 内触发(script 行 268);参数表达式:无回调参数;前置 guard:!mounted || motionId.value != enterMotionId || !rendered.value、duration == 0、!mounted || motionId.value != enterMotionId || !rendered.value | (...args: any[]) | 表中参数表达式来自当前源码直接调用点;禁用、守卫失败或未进入该函数分支时不会触发。 |
close | closePanel 内触发(script 行 284);参数表达式:无回调参数;前置 guard:!rendered.value | (...args: any[]) | 表中参数表达式来自当前源码直接调用点;禁用、守卫失败或未进入该函数分支时不会触发。 |
closed | closePanel 内触发(script 行 288);参数表达式:无回调参数;前置 guard:!rendered.value、duration == 0setup 内触发(script 行 295);参数表达式:无回调参数;前置 guard:motionId.value != closeMotionIdclosePanel 内触发(script 行 299);参数表达式:无回调参数;前置 guard:!rendered.value、duration == 0、motionId.value != closeMotionId | (...args: any[]) | 表中参数表达式来自当前源码直接调用点;禁用、守卫失败或未进入该函数分支时不会触发。 |
select | handleSelect 内触发(script 行 311);参数表达式:{ index, action };前置 guard:action.disabled == true || (closePending != null && closePending())、!current() | (...args: any[]) | 表中参数表达式来自当前源码直接调用点;禁用、守卫失败或未进入该函数分支时不会触发。 |
cancel | finish 内触发(script 行 228);参数表达式:无回调参数;前置 guard:!current() || !allowed || action?.disabled == true | (...args: any[]) | 表中参数表达式来自当前源码直接调用点;禁用、守卫失败或未进入该函数分支时不会触发。 |
插槽
| 插槽 | Scope 参数 | 实际渲染位置 |
|---|---|---|
| - | - | 当前模板没有公开 slot。 |
方法
实例方法
| 方法 | 签名 / 返回值 | 调用边界 |
|---|---|---|
| - | - | 当前组件没有公开实例方法。 |
公开状态
| 状态 | 类型 / 包装 | 读取边界 |
|---|---|---|
| - | - | 当前组件没有公开状态。 |
Manager 宿主与导入
- 宿主:在页面中挂载
<XtfActionSheet service />。 - 导入:
import { actionSheetManager } from "@/uni_modules/xtf-linkuiunix/components/xtf-action-sheet/service.uts"。 - 调用:基础用法中的 Manager 示例调用真实显示 API,而不是只读取
getState()。 - 返回:manager 返回当前状态快照或通知项,不是等待用户操作的 Promise;用户结果继续监听宿主事件。
主题说明
var(--xtf-color-danger-soft):组件样式实际读取的主题变量,可在xtf-config-provider作用域或主题 class 下覆盖。var(--xtf-color-overlay):组件样式实际读取的主题变量,可在xtf-config-provider作用域或主题 class 下覆盖。var(--xtf-color-surface):组件样式实际读取的主题变量,可在xtf-config-provider作用域或主题 class 下覆盖。var(--xtf-color-surface-muted):组件样式实际读取的主题变量,可在xtf-config-provider作用域或主题 class 下覆盖。var(--xtf-opacity-disabled):组件样式实际读取的主题变量,可在xtf-config-provider作用域或主题 class 下覆盖。var(--xtf-radius-lg):组件样式实际读取的主题变量,可在xtf-config-provider作用域或主题 class 下覆盖。var(--xtf-radius-xl):组件样式实际读取的主题变量,可在xtf-config-provider作用域或主题 class 下覆盖。
平台与实现边界
- 基线为 HBuilderX 5.26+ 与 uni-app x;当前报告已验证 Web Chromium 的对应 Demo,不据此承诺 Safari、小程序或 App 原生端等价。
- Android、iOS、HarmonyOS、Vapor 原生路径、触摸手势、字体、Canvas、安全区和系统权限能力,只有源码或完整性报告明确覆盖的部分才可视为已验证。
- 本文按当前源码生成,不补入旧版
xtf-linkui存在但迁移版未实现的 props、事件、slot 或方法。 - 详细公共边界见 平台与实现边界,逐项运行证据见项目根目录 COMPONENT_COMPLETENESS.md。