浮层

漫游导览 AsamTour

围绕页面目标组织多步骤引导。

使用场景 ​

围绕页面目标组织多步骤引导。

目标步骤与无目标步骤 ​

目标来自当前 SFC 的元素 ref,避免依赖页面全局 ID。

目标步骤与无目标步骤

展开源码

使用约定 ​

modelValue 与 current 分别控制显隐和当前步骤,change/finish/close 通知进度。 完整说明。

完整用法 ​

以下用法使用本库公开入口。每个示例提供完整 TS/JS SFC,参数、事件、插槽和实例类型见本页 API。服务实例由创建方负责关闭;HTML 内容仅用于调用方已知的可信字符串。

基本用法 ​

基本用法

展开源码

无遮罩引导 ​

无遮罩引导

展开源码

定位方向 ​

定位方向

展开源码

遮罩与点击区域 ​

遮罩与点击区域

展开源码

自定义进度指示 ​

自定义进度指示

展开源码

动态目标 ​

动态目标

展开源码

组合职责与生命周期 ​

default 中可直接放置 AsamTourStep,或使用原生可识别的 Fragment 组织步骤。 完整说明。

current 为零起始索引,change 通知切换,finish 只在最后一步完成时发出,close 包含当前索引。 完整说明。

步骤组合与原生限制 ​

下面的 Fragment 和无 props 纯函数示例各有两步。有状态包装示例中,包装后的步骤不计入 total,只剩直接声明的一步;第一次完成便结束导览。这是原生组合限制。需要有状态内容时,将 AsamTourStep 直接放在导览插槽中,把内容组件放进步骤内部。

步骤组合与原生限制

展开源码

原生步骤与载荷 ​

默认插槽原样交给原生 Tour;使用同对象别名 AsamTourStep。modelValue/current 的更新、change、close(current) 和 finish 仅转发原生事件;indicators 保留 current/total scope。组件不克隆或递归替换步骤类型。

局部与全局挂载 ​

切换的是公开 appendTo 挂载位置;导览的目标定位和遮罩仍遵循组件原有视口语义。 开关显示当前模式,两个模式均可操作;关闭后可以再次切换。

局部与全局挂载

展开源码

API

属性 AsamTourProps

属性名说明类型默认值
modelValue—boolean | undefinedfalse
current—number | undefined—
showArrow—boolean | undefinedtrue
showClose—boolean | undefinedtrue
closeIcon—(AsamTourProps)["closeIcon"]—
placement—enum"top" | "bottom" | "right" | "left" | "top-start" | "top-end" | "bottom-start" | "bottom-end" | "right-start" | "right-end" | "left-start" | "left-end"完整类型:AsamTourPlacement | undefined"bottom"
contentStyle—import("vue").CSSProperties | undefined—
mask—(AsamTourProps)["mask"]true
gap—(AsamTourProps)["gap"]工厂函数(每个实例创建)
zIndex—number | undefined—
scrollIntoViewOptions—boolean | ScrollIntoViewOptions | undefined工厂函数(每个实例创建)
type—enum"default" | "primary"完整类型:"default" | "primary" | undefined—
appendTo—string | HTMLElement | undefined"body"
closeOnPressEscape—boolean | undefinedtrue
targetAreaClickable—boolean | undefinedtrue

事件 AsamTourEmits

属性名说明类型默认值
update:modelValue—[value: boolean]—
update:current—[current: number]—
close—[current: number]—
finish—(AsamTourEmits)["finish"]—
change—[current: number]—

插槽 AsamTourSlots

属性名说明类型默认值
default—(() => unknown) | undefined—
indicators—((props: { current: number; total: number; }) => unknown) | undefined—

类型 AsamTourPlacement

用法与契约补充说明 ​

使用约定 ​

modelValue 与 current 分别控制显隐和当前步骤,change/finish/close 通知进度。mask、gap、placement、showArrow、scrollIntoViewOptions 和 targetAreaClickable 配置目标遮罩及定位。每个步骤使用 AsamTourStep;步骤枚举沿用原生能力,不能把任意包装组件当作步骤。indicators 插槽可自定义进度;无四档密度 size。

组合职责与生命周期 ​

default 中可直接放置 AsamTourStep,或使用原生可识别的 Fragment 组织步骤。无 props、无 slots 的纯函数组件可返回这些步骤;函数不应依赖组件实例或 setup 状态。用 defineComponent 或 SFC 创建的有状态包装组件即使渲染 AsamTourStep,也不会因此参与步骤枚举。不要依靠包装组件的 render 结果增加步骤,组件不为此递归渲染或改写 VNode。

组合职责与生命周期 ​

current 为零起始索引,change 通知切换,finish 只在最后一步完成时发出,close 包含当前索引。target 可为选择器、HTMLElement 或返回元素的函数,动态目标需保证当前 DOM 已挂载。scrollIntoViewOptions 接受布尔值或原生滚动选项对象,步骤可覆盖父配置。mask/gap/targetAreaClickable 控制遮罩与可点击区域;无目标步骤居中。indicators 接收 current/total;导航按钮配置由各步骤承担,关闭和卸载释放焦点、遮罩及监听。

参数与事件补充说明

参数与事件说明

modelValue

必填:否;声明来源:ASAM 声明。

modelValue 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

默认值与来源
false(隐式 Boolean 默认;已安装组件)
current

必填:否;声明来源:ASAM 声明。

默认值与来源
未知 / 未声明

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

showArrow

必填:否;声明来源:ASAM 声明。

showArrow 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

默认值与来源
true(已安装运行时;已安装组件)

固定上游源码默认表达式:true(2.14.7;源码事实,未作为 ASAM 运行实测)

showClose

必填:否;声明来源:ASAM 声明。

showClose 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

默认值与来源
true(已安装运行时;已安装组件)

固定上游源码默认表达式:true(2.14.7;源码事实,未作为 ASAM 运行实测)

closeIcon

必填:否;声明来源:ASAM 声明。

closeIcon 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(props: any, ctx: Parameters<Extract<NonNullable<(AsamTourProps)["closeIcon"]>, (...args: never[]) => unknown>>[1]): any

  • closeIcon.__isFragment: undefined — 依赖声明
  • closeIcon.__isTeleport: undefined — 依赖声明
  • closeIcon.__isSuspense: undefined — 依赖声明
默认值与来源
未知 / 未声明

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

placement

必填:否;声明来源:ASAM 声明。

placement 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:"top" / "bottom" / "right" / "left" / "top-start" / "top-end" / "bottom-start" / "bottom-end" / "right-start" / "right-end" / "left-start" / "left-end"

默认值与来源
"bottom"(已安装运行时;已安装组件)
contentStyle

必填:否;声明来源:ASAM 声明。

contentStyle 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

嵌套展开边界:大型实例类型;完整类型见公开类型视图。

默认值与来源
未知 / 未声明

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

mask

必填:否;声明来源:ASAM 声明。

mask 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

  • mask.style: CSSProperties | undefined — 上游声明

    嵌套展开边界:大型实例类型;完整类型见公开类型视图。

  • mask.color: string | undefined — 上游声明
默认值与来源
true(已安装运行时;已安装组件)

固定上游源码默认表达式:true(2.14.7;源码事实,未作为 ASAM 运行实测)

gap

必填:否;声明来源:ASAM 声明。

gap 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

  • gap.offset: number | [number, number] | undefined — 上游声明
  • gap.radius: number | undefined — 上游声明
默认值与来源
工厂函数(每个实例创建)(实例工厂;已安装组件)

固定上游源码工厂(未执行):() => ({ offset: 6, radius: 2, })(2.14.7;源码事实,未作为 ASAM 运行实测)

zIndex

必填:否;声明来源:ASAM 声明。

默认值与来源
未知 / 未声明

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

scrollIntoViewOptions

必填:否;声明来源:ASAM 声明。

scrollIntoViewOptions 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

  • scrollIntoViewOptions.block: ScrollLogicalPosition | undefined — 依赖声明

    枚举:"start" / "center" / "end" / "nearest"

  • scrollIntoViewOptions.inline: ScrollLogicalPosition | undefined — 依赖声明

    枚举:"start" / "center" / "end" / "nearest"

  • scrollIntoViewOptions.behavior: ScrollBehavior | undefined — 依赖声明

    枚举:"auto" / "smooth" / "instant"

默认值与来源
工厂函数(每个实例创建)(实例工厂;已安装组件)

固定上游源码工厂(未执行):() => ({ block: 'center', })(2.14.7;源码事实,未作为 ASAM 运行实测)

type

必填:否;声明来源:ASAM 声明。

type 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:"default" / "primary"

默认值与来源
未知 / 未声明

固定上游源码未声明 default(2.14.7;源码事实,未作为 ASAM 运行实测)

appendTo

必填:否;声明来源:ASAM 声明。

appendTo 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

嵌套展开边界:大型实例类型;完整类型见公开类型视图。

默认值与来源
"body"(已安装运行时;已安装组件)

固定上游源码默认表达式:'body'(2.14.7;源码事实,未作为 ASAM 运行实测)

closeOnPressEscape

必填:否;声明来源:ASAM 声明。

closeOnPressEscape 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

默认值与来源
true(已安装运行时;已安装组件)

固定上游源码默认表达式:true(2.14.7;源码事实,未作为 ASAM 运行实测)

targetAreaClickable

必填:否;声明来源:ASAM 声明。

targetAreaClickable 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

枚举:false / true

默认值与来源
true(已安装运行时;已安装组件)

固定上游源码默认表达式:true(2.14.7;源码事实,未作为 ASAM 运行实测)

AsamTourProps 公开类型视图
ts
import type { Attrs, CSSProperties } from 'vue';
import type { AsamTourProps, AsamTourPlacement, AsamTourStepProps } from '@asam-ui/ui';

type PublicMember<T, K extends PropertyKey> = T extends unknown ? K extends keyof T ? T[K] : never : never;

// AsamTourProps
type PublicContract = {
	"modelValue"?: boolean | undefined;
	"current"?: number | undefined;
	"showArrow"?: boolean | undefined;
	"showClose"?: boolean | undefined;
	"closeIcon"?: (AsamTourProps)["closeIcon"];
	"placement"?: AsamTourPlacement | undefined;
	"contentStyle"?: import("vue").CSSProperties | undefined;
	"mask"?: (AsamTourProps)["mask"];
	"gap"?: (AsamTourProps)["gap"];
	"zIndex"?: number | undefined;
	"scrollIntoViewOptions"?: boolean | ScrollIntoViewOptions | undefined;
	"type"?: "default" | "primary" | undefined;
	"appendTo"?: string | HTMLElement | undefined;
	"closeOnPressEscape"?: boolean | undefined;
	"targetAreaClickable"?: boolean | undefined;
};

参数与事件说明

update:modelValue

必填:是;声明来源:ASAM 声明。

update:current

必填:是;声明来源:ASAM 声明。

close

必填:是;声明来源:ASAM 声明。

finish

必填:是;声明来源:ASAM 声明。

change

必填:是;声明来源:ASAM 声明。

AsamTourEmits 公开类型视图
ts
import type { AsamTourEmits } from '@asam-ui/ui';

// AsamTourEmits
type PublicContract = {
	"update:modelValue": [value: boolean];
	"update:current": [current: number];
	"close": [current: number];
	"finish": (AsamTourEmits)["finish"];
	"change": [current: number];
};

参数与事件说明

default

必填:否;声明来源:ASAM 声明。

default 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(): unknown

indicators

必填:否;声明来源:ASAM 声明。

indicators 参数与事件数据

下列为声明可读视图;可导入类型以公开类型视图为准。分支条件与父属性一致。

事件参数:(props: { current: number; total: number; }): unknown

AsamTourSlots 公开类型视图
ts
import type { AsamTourSlots } from '@asam-ui/ui';

// AsamTourSlots
type PublicContract = {
	"default"?: (() => unknown) | undefined;
	"indicators"?: ((props: { current: number; total: number; }) => unknown) | undefined;
};

精确保留 floating-ui 的 Placement 取值范围,使用本地类型名便于 SFC 声明移植。

组合契约按分支生效;请同时查看公开类型。

AsamTourPlacement 公开类型视图
ts
import type { AsamTourPlacement } from '@asam-ui/ui';

// AsamTourPlacement
type PublicContract = AsamTourPlacement;

搜索文档

Tab 选择结果 Enter 打开 Esc 关闭