Skip to content

Alert 提示

xy-alert 用来在页面中直接展示重要提示,而不是弹出额外浮层。它不会自动消失,适合权限提醒、发布风险、配置警告和成功回执这类需要用户明确看到的反馈。

这一版除了组件直接渲染,也补了顶部横幅队列式的全局服务 XyAlertService,适合页面切换、保存成功和全局风险广播这类需要“随处触发、统一展示”的场景。

基础用法

type 决定提示的语义色,默认值为 info。适合放在表单顶部、列表筛选区和详情页头部做即时提醒。

基础用法语义类型

用于页面内操作反馈、信息提示和警告提醒。

主题风格

effect 支持 lightdark 两套风格。light 更适合嵌入页面内容区,dark 更适合强调风险或操作前提醒。

自定义关闭按钮

closable 可以控制是否允许关闭,close-text 可以把默认关闭图标替换成文案按钮。

最近关闭:尚无记录

带图标

打开 show-icon 后会按当前 type 渲染默认图标;如果你希望更贴近业务语义,可以使用 icon 插槽覆盖。

图标Icon

警告提示可以显示图标,支持默认图标和自定义图标。

内容居中

center 适合审批页头、看板摘要区或需要更强视觉聚焦的横幅式提示。

带描述

description 用于承接更完整的说明文案。只要存在 description 属性或默认插槽中的有效内容,就会渲染描述区。

描述文本Description

警告提示可以包含描述文本,提供更详细的信息说明。

带图标和描述

在风险提示、发布校验和批量操作确认里,通常会同时使用图标和描述,让提示更容易被快速扫读。

受控显隐

传入 v-model 后,Alert 的显示状态会交给父组件控制,适合和页面筛选、请求结果或统一状态管理联动。

自动关闭

duration 单位为毫秒,0 表示不自动关闭。和 v-model 搭配时,自动关闭会同步回写外部状态。

duration = 3000
最近一次自动关闭:尚未触发

操作区

通过 actions 插槽补充按钮、链接或轻操作,让提示不仅说明问题,也能承接下一步动作。

尺寸

size 支持 sm / md / lg,未传时会跟随 xy-config-provider 的全局尺寸。

变体

variant 用于扩展布局形态。banner 更适合横幅式提醒,card 更适合块级反馈容器。

关闭拦截

before-close 沿用当前库的 done(cancel?) 风格。适合在关闭前补确认、保存校验或异步检查。

当前未满足关闭条件,请先勾选“允许关闭”。

Hover 暂停自动关闭

打开 pause-on-hover 后,鼠标悬停在提示上会暂停自动关闭计时,离开后再继续剩余时间。现在也支持通过 pause-on-focuspause-on-page-hidden 扩展暂停时机。

duration = 3000hover 暂停 = true
最近一次结果:尚未自动关闭

聚焦与页面隐藏暂停

pause-on-focus 适合键盘操作或操作区较多的场景;pause-on-page-hidden 则更适合用户可能频繁切出标签页的长流程页面。

focus 暂停 = truepage hidden 暂停 = true
最近一次结果:尚未自动关闭

折叠描述

collapsible 适合承接更长的说明文字。现在可以通过 line-clampexpand-textcollapse-text 进一步调整折叠体验。

全局服务

XyAlertService.open() 适合在任意位置直接触发顶部横幅提示,并返回一个可更新和关闭的句柄。

队列与清空

服务化提示采用顶部横幅 FIFO 队列,同一时刻只显示一条。可以通过 closeAll() 一次性清空当前项和等待队列。

当前累计入队:0

队列上限与状态快照

通过 maxQueueoverflowStrategy 可以约束等待队列长度;getState() 则适合把当前项、等待数量和总量接进页面状态面板。

当前项:无queueLength:0total:0

服务去重

为服务提示传入相同的 groupKey 后,重复触发不会继续入队,而是直接合并更新当前项或等待项。

已触发:0

行为说明

  • 未传 modelValue 时,xy-alert 会维持当前自管理显隐模式,点击关闭后立即隐藏自身,并触发 close 事件。
  • 传入 modelValue 后会进入受控模式,显示状态以外部值为准,并通过 update:model-value 回写。
  • duration > 0 时会在组件可见后启动自动关闭定时器,触发时发出 auto-close
  • beforeClose 只拦截手动关闭路径,不拦截自动关闭。
  • pauseOnHoverpauseOnFocuspauseOnPageHidden 只在 duration > 0 时生效;页面隐藏暂停基于 visibilitychange
  • collapsible 只作用于描述区;lineClamp 默认值为 2,可通过 expandText / collapseText 自定义触发文案,不提供受控 expanded 模式。
  • XyAlertService 固定使用顶部横幅队列展示,不支持插槽或 actions;复杂内容仍建议直接渲染组件。
  • 相同 groupKey 的服务提示不会重复入队,而是合并更新已有项。
  • 服务提示可通过 appendTo 改挂到指定 DOM 节点,适合微前端、局部壳子或定制层级场景。
  • maxQueue 控制等待队列的最大长度,不包含当前展示项;命中上限时按 overflowStrategy 处理溢出项。
  • 服务项关闭时可通过 onClosed(reason) 收到 manualautoclose-alloverflow 四类原因。
  • 服务队列清空后会自动销毁挂到 body 的服务宿主。

API

Alert Attributes

属性说明类型默认值
model-value受控显示状态AlertProps["modelValue"]undefined
title提示标题string''
description描述文案string''
type提示类型AlertType'info'
closable是否可关闭booleantrue
close-text自定义关闭文案string''
show-icon是否显示图标booleanfalse
center是否居中显示内容booleanfalse
effect主题风格AlertEffect'light'
duration自动关闭时长,单位毫秒,0 表示不自动关闭number0
size组件尺寸,未传时跟随全局配置AlertProps["size"]全局 size / 'md'
variant布局变体AlertVariant'default'
before-close手动关闭前拦截函数AlertBeforeCloseFnundefined
pause-on-hover自动关闭时悬停是否暂停计时booleanfalse
pause-on-focus自动关闭时聚焦内部元素是否暂停计时booleanfalse
pause-on-page-hidden页面隐藏时是否暂停自动关闭计时booleanfalse
collapsible是否允许折叠描述区booleanfalse
default-expanded折叠描述是否默认展开booleanfalse
line-clamp折叠描述时的裁切行数number2
expand-text折叠态触发器文案string'展开详情'
collapse-text展开态触发器文案string'收起详情'

Alert Events

事件说明参数
close手动关闭提示时触发AlertCloseHandler
update:model-value受控模式下同步显示状态AlertModelValueChangeHandler
auto-close自动关闭定时器触发时发出AlertAutoCloseHandler

Alert Slots

插槽说明
default描述区内容
title标题内容
icon图标内容
actions操作区内容

Alert Service

ts
import { XyAlertService } from "xiaoye-components";

const handle = XyAlertService.open({
  groupKey: "publish-sync",
  appendTo: "#workspace-shell",
  maxQueue: 3,
  overflowStrategy: "drop-oldest",
  title: "保存成功",
  type: "success",
  duration: 2400,
  showIcon: true,
  onClosed(reason) {
    console.log("alert closed because:", reason);
  }
});

handle.update({
  title: "已同步到草稿箱"
});

handle.close();

XyAlertService.closeAll();

const snapshot = XyAlertService.getState();

console.log(snapshot.queueLength, snapshot.total);

Alert Service Options

字段说明类型
title提示标题string
description描述文案string
type提示类型AlertType
closable是否可关闭boolean
closeText自定义关闭文案string
showIcon是否显示图标boolean
center是否居中显示内容boolean
effect主题风格AlertEffect
duration自动关闭时长number
size组件尺寸AlertServiceOptions["size"]
groupKey服务提示分组键;相同键会合并更新已有项而不是重复入队string
appendTo服务宿主挂载目标,支持 CSS 选择器或 HTMLElementstring | HTMLElement
maxQueue等待队列最大长度,不包含当前展示项number
overflowStrategy队列超限时的处理策略AlertOverflowStrategy
onClosed服务项关闭后的回调,可收到关闭原因AlertServiceClosedFn
beforeClose手动关闭前拦截函数AlertBeforeCloseFn
pauseOnHover自动关闭时悬停是否暂停计时boolean
pauseOnFocus自动关闭时聚焦内部元素是否暂停计时boolean
pauseOnPageHidden页面隐藏时是否暂停自动关闭计时boolean
collapsible是否允许折叠描述区boolean
defaultExpanded折叠描述是否默认展开boolean
lineClamp折叠描述时的裁切行数number
expandText折叠态触发器文案string
collapseText展开态触发器文案string

Alert Service Handle

方法说明签名
close手动关闭当前服务提示AlertServiceHandle["close"]
update更新当前项或排队项的配置AlertServiceHandle["update"]

Alert Service Snapshot

服务状态快照类型为 AlertServiceSnapshot

Alert Service Methods

方法说明签名
open打开顶部横幅服务提示AlertService["open"]
getState获取当前服务状态的只读快照AlertService["getState"]
closeAll清空当前项和等待队列AlertService["closeAll"]

Alert CSS Variables

变量名说明默认值
--xy-alert-padding容器内边距10px 16px
--xy-alert-border-radius圆角var(--xy-radius-md)
--xy-alert-gap图标、内容和操作区间距12px
--xy-alert-content-gap标题与描述间距4px
--xy-alert-actions-gap操作项间距12px
--xy-alert-title-font-size标题字号var(--xy-font-size-md)
--xy-alert-title-with-description-font-size带描述时标题字号var(--xy-font-size-lg)
--xy-alert-description-font-size描述字号13px
--xy-alert-icon-size默认图标尺寸16px
--xy-alert-icon-large-size描述态图标尺寸28px
--xy-alert-close-font-size关闭图标字号14px
--xy-alert-close-customed-font-size自定义关闭文案字号13px
--xy-alert-toggle-font-size展开/收起触发器字号12px
--xy-alert-text-color当前提示主色var(--xy-info)
--xy-alert-bg-color当前提示背景色color-mix(in srgb, var(--xy-info) 12%, white)
--xy-alert-description-color描述文字颜色var(--xy-alert-text-color)
--xy-alert-close-color关闭按钮颜色var(--xy-text-muted)
--xy-alert-toggle-color展开/收起触发器颜色color-mix(in srgb, var(--xy-alert-text-color) 88%, white)
--xy-alert-card-border-color卡片变体边框色color-mix(in srgb, var(--xy-border) 92%, white)
--xy-alert-card-background卡片变体背景色color-mix(in srgb, var(--xy-bg-container) 95%, var(--xy-bg-muted))
--xy-alert-card-shadow卡片变体阴影0 14px 36px rgba(15, 23, 42, 0.06)
--xy-alert-banner-background横幅变体背景linear-gradient(...)
--xy-alert-service-top全局服务距离顶部的偏移16px
--xy-alert-service-max-width全局服务最大宽度960px
--xy-alert-service-z-index全局服务层级2100