@robot-admin/naive-ui-components 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/C_NotificationCenter.css +114 -78
  3. package/dist/C_NotificationCenter.d.cts +2 -2
  4. package/dist/C_NotificationCenter.d.ts +2 -2
  5. package/dist/C_NotificationCenter2.cjs +1 -1
  6. package/dist/C_NotificationCenter2.js +1 -1
  7. package/dist/constants.d.cts +1 -1
  8. package/dist/constants.d.ts +1 -1
  9. package/dist/constants3.d.cts +73 -119
  10. package/dist/constants3.d.ts +73 -119
  11. package/dist/constants4.d.cts +2 -2
  12. package/dist/constants4.d.ts +2 -2
  13. package/dist/constants5.d.cts +4 -4
  14. package/dist/constants5.d.ts +4 -4
  15. package/dist/data.d.cts +9 -9
  16. package/dist/data.d.ts +9 -9
  17. package/dist/index.d.cts +2 -2
  18. package/dist/index.d.ts +2 -2
  19. package/dist/index.vue.d.cts +3 -3
  20. package/dist/index.vue.d.ts +3 -3
  21. package/dist/index10.vue.d.cts +3 -3
  22. package/dist/index10.vue.d.ts +1 -1
  23. package/dist/index11.vue.d.cts +1 -1
  24. package/dist/index11.vue.d.ts +2 -2
  25. package/dist/index12.vue.d.cts +2 -2
  26. package/dist/index13.vue.d.ts +2 -2
  27. package/dist/index14.vue.d.cts +2 -2
  28. package/dist/index14.vue.d.ts +7 -7
  29. package/dist/index15.vue.d.cts +7 -7
  30. package/dist/index15.vue.d.ts +1 -1
  31. package/dist/index16.vue.d.cts +1 -1
  32. package/dist/index16.vue.d.ts +1 -1
  33. package/dist/index17.vue.d.cts +1 -1
  34. package/dist/index17.vue.d.ts +2 -2
  35. package/dist/index18.vue.d.cts +2 -2
  36. package/dist/index18.vue.d.ts +4 -4
  37. package/dist/index19.vue.d.cts +4 -4
  38. package/dist/index19.vue.d.ts +1 -1
  39. package/dist/index2.vue.d.cts +2 -2
  40. package/dist/index2.vue.d.ts +2 -2
  41. package/dist/index20.vue.d.cts +2 -2
  42. package/dist/index20.vue.d.ts +2 -2
  43. package/dist/index21.vue.d.cts +1 -1
  44. package/dist/index21.vue.d.ts +1 -1
  45. package/dist/index22.vue.d.cts +2 -2
  46. package/dist/index22.vue.d.ts +2 -2
  47. package/dist/index23.vue.d.cts +1 -1
  48. package/dist/index23.vue.d.ts +1 -1
  49. package/dist/index25.vue.d.cts +3 -3
  50. package/dist/index25.vue.d.ts +3 -3
  51. package/dist/index27.vue.d.cts +3 -3
  52. package/dist/index27.vue.d.ts +3 -3
  53. package/dist/index28.vue.d.cts +3 -3
  54. package/dist/index28.vue.d.ts +3 -3
  55. package/dist/index3.vue.d.cts +3 -3
  56. package/dist/index3.vue.d.ts +3 -3
  57. package/dist/index4.vue.d.cts +1 -1
  58. package/dist/index6.vue.d.ts +2 -2
  59. package/dist/index7.vue.d.cts +2 -2
  60. package/dist/index9.vue.d.ts +3 -3
  61. package/dist/mapUtils.d.cts +3 -3
  62. package/dist/mapUtils.d.ts +3 -3
  63. package/dist/style.css +115 -79
  64. package/dist/useCalendarEvents.d.cts +1 -1
  65. package/dist/useCalendarEvents.d.ts +1 -1
  66. package/dist/useCollapsePanel.d.cts +1 -1
  67. package/dist/useCollapsePanel.d.ts +1 -1
  68. package/dist/useCropperCore.d.cts +6 -6
  69. package/dist/useCropperCore.d.ts +6 -6
  70. package/dist/useDraggableLayout.d.cts +3 -3
  71. package/dist/useDraggableLayout.d.ts +3 -3
  72. package/dist/useDynamicFormState.d.cts +2 -2
  73. package/dist/useDynamicFormState.d.ts +2 -2
  74. package/dist/useEdgeInteraction.d.cts +1 -1
  75. package/dist/useEdgeInteraction.d.ts +1 -1
  76. package/dist/useFullscreen.d.cts +2 -2
  77. package/dist/useFullscreen.d.ts +2 -2
  78. package/dist/useInfiniteScroll.d.cts +1 -1
  79. package/dist/useInfiniteScroll.d.ts +1 -1
  80. package/dist/useQRCode.d.cts +1 -1
  81. package/dist/useQRCode.d.ts +1 -1
  82. package/dist/useSearchState.d.cts +3 -3
  83. package/dist/useSearchState.d.ts +3 -3
  84. package/dist/useSignatureHistory.d.cts +4 -4
  85. package/dist/useSignatureHistory.d.ts +4 -4
  86. package/dist/useSplitResize.d.cts +6 -6
  87. package/dist/useSplitResize.d.ts +6 -6
  88. package/dist/useTableQuery.d.cts +1 -1
  89. package/dist/useTableQuery.d.ts +1 -1
  90. package/dist/useTimeSelection.d.cts +1 -1
  91. package/dist/useTimeSelection.d.ts +1 -1
  92. package/dist/useTreeOperations.d.cts +6 -6
  93. package/dist/useTreeOperations.d.ts +6 -6
  94. package/dist/useWorkflowValidation.d.cts +2 -2
  95. package/dist/useWorkflowValidation.d.ts +2 -2
  96. package/dist/verification.d.cts +1 -1
  97. package/dist/verification.d.ts +1 -1
  98. package/docs/components.en.md +5 -5
  99. package/docs/components.md +5 -5
  100. package/docs/guides/notification-center.md +95 -0
  101. package/package.json +1 -1
@@ -85,11 +85,11 @@
85
85
 
86
86
  ## 流程 & 通知组件
87
87
 
88
- | 组件 | 说明 | 外部依赖 |
89
- | ---------------------- | ------------------------------------ | ---------------- |
90
- | `C_WorkFlow` | 工作流编辑器(审批/抄送/条件节点) | `@vue-flow/core` |
91
- | `C_NotificationCenter` | 通知中心(WebSocket/轮询) | - |
92
- | `C_Upload` | 大文件上传(分片/断点续传/哈希校验) | `spark-md5` |
88
+ | 组件 | 说明 | 外部依赖 |
89
+ | ---------------------- | ------------------------------------ | ------------------------------------------- |
90
+ | `C_WorkFlow` | 工作流编辑器(审批/抄送/条件节点) | `@vue-flow/core` |
91
+ | `C_NotificationCenter` | 通知中心(演示/远程/共享控制器) | [接入指南](./guides/notification-center.md) |
92
+ | `C_Upload` | 大文件上传(分片/断点续传/哈希校验) | `spark-md5` |
93
93
 
94
94
  ## 依赖说明
95
95
 
@@ -0,0 +1,95 @@
1
+ # 通知中心:演示、远程接口与共享数据源
2
+
3
+ `C_NotificationCenter` 提供顶部入口、分类列表、详情与消息操作。业务路由、用户/公司身份、待办办理和后端投递由应用负责;组件不读取业务 Store,不绑定具体后台。
4
+
5
+ ## 保留开箱演示
6
+
7
+ ```vue
8
+ <C_NotificationCenter
9
+ data-mode="demo"
10
+ storage-key="my-app:notifications:demo"
11
+ />
12
+ ```
13
+
14
+ 未指定 `dataMode` 时,配置 `fetchNotifications` 会进入远程模式,否则保持演示兼容行为。显式 `demo` 使用内置消息,已读、删除、清空即时持久化到自己的 storage key;刷新和重挂不会恢复已经清空的消息。需要重置演示时由应用删除该 key,其他应用存储不会被修改。
15
+
16
+ 演示模式不调用远程适配器,不启动远程轮询。消息推送配置仍需显式提供,组件不会连接任何演示服务器。
17
+
18
+ ## 对接远程查询与命令
19
+
20
+ ```vue
21
+ <C_NotificationCenter
22
+ data-mode="remote"
23
+ :fetch-notifications="fetchInbox"
24
+ :mark-as-read="markRead"
25
+ :mark-all-read="markAllRead"
26
+ :delete-notification="deleteInboxItems"
27
+ :clear-notifications="clearInbox"
28
+ :on-error="reportNotificationError"
29
+ @view-all="router.push('/message-center')"
30
+ />
31
+ ```
32
+
33
+ `fetchInbox({ category, page, pageSize })` 返回:
34
+
35
+ ```ts
36
+ {
37
+ list: NotificationMessage[],
38
+ total: number, // 当前查询条件的总条数
39
+ unreadCount: number, // 全局未读总数,不是当前页或当前分类的数量
40
+ unreadByCategory?: { system?: number, business?: number, alarm?: number }
41
+ }
42
+ ```
43
+
44
+ 分类统计未返回时保持未知,UI 隐藏对应数字,不能用当前页推算完整统计。分页合并按消息 ID 去重,并更新服务端返回的同 ID 记录。分页失败保留已加载数据和当前页,重试继续失败的目标页。
45
+
46
+ 远程模式缺少查询或操作适配器会显示错误并拒绝该操作,绝不会回退到演示数据或伪装成功。异步命令必须在对应适配器内返回 Promise;`read`、`delete`、`allRead` 仅通知正常点击命令的成功完成。错误区的“重试”会重放最近失败的命令;重试不会补发原点击的成功事件,业务状态应以共享数据源或服务端结果为准。
47
+
48
+ 读、删命令使用操作日志叠加状态。旧请求失败只撤销自己的影响,不会覆盖后续成功操作,也不会用旧整表快照抹掉刷新或实时新增的消息。批量已读和清空需要后端定义作用范围、截止时间与权限;涉及跨页或复杂业务筛选时,建议使用下方应用控制器协调接口与服务端统计对账。
49
+
50
+ 没有服务端快照版本或事件游标时,前端无法判断一次统计响应是否已包含仍在途中的批量命令。应用适配器应发送明确截止时间/版本,成功后重新查询权威统计;查询和推送也应采用同一服务端版本规则。组件的操作日志用于避免本地请求回滚互相覆盖,不代表对服务器全量状态的交付或一致性保证。跨页已知记录索引仅额外保留最近 256 条,当前可见记录与进行中操作记录按需保留。
51
+
52
+ ## 顶部与完整消息中心共用应用状态
53
+
54
+ `controller?: NotificationCenterController` 是可选的公开协议,所有状态为 Ref 或 computed Ref。传入后,组件不再创建内部 core,不额外请求、轮询或建连,也不会在卸载时销毁应用数据源。
55
+
56
+ ```ts
57
+ import { useNotificationCore } from '@robot-admin/naive-ui-components'
58
+
59
+ // 在应用拥有的 setup/effectScope 中创建;Store 的身份隔离和退出清理由应用管理。
60
+ const controller = useNotificationCore({
61
+ dataMode: 'remote',
62
+ fetchNotifications: fetchInbox,
63
+ markAsRead: markRead,
64
+ pollingInterval: 60_000,
65
+ })
66
+ ```
67
+
68
+ ```vue
69
+ <C_NotificationCenter :controller="controller" @view-all="openMessageCenter" />
70
+ ```
71
+
72
+ 自定义应用 Store 也可以直接实现该接口。列表、统计和操作可投影共享 Store;`activeCategory`、`selectedMessage`、`popoverVisible` 可在顶部桥接对象中独立保存,避免完整页面的筛选改变顶部列表。请传递保留 Ref 的普通对象,避免用会自动解包 Ref 的深层 reactive 对象包裹整个控制器。
73
+
74
+ 控制器包含 `error`、`busy`、`pendingIds`、`clearError()`,以及可选 `retry()`。若自定义控制器未提供 retry,错误区重试会刷新列表。独立 `useNotificationCore` 另外返回 `initialize()`/`dispose()`;需要手动初始化时设 `autoStart: false`。Vue 组件挂载后自动初始化,普通 effectScope 内会立即初始化,作用域停止会清理资源。切换 dataMode/storageKey 会清理旧作用域数据并重新初始化;远程用户/公司切换仍应由应用替换控制器或销毁旧作用域,并按身份取消请求。
75
+
76
+ ## WebSocket 的可选增强
77
+
78
+ 支持:
79
+
80
+ - `new_message`:完整 NotificationMessage;按 ID 去重,校验消息结构。
81
+ - `read_sync`:完整消息数组;同步其中消息 ID 的已读状态。
82
+ - `count_update`:`{ unreadCount, unreadByCategory? }`;校准权威未读统计,不重复扣减之前已发出的乐观命令。
83
+
84
+ 自动重连使用有上限的退避,旧 socket 的迟到事件会被忽略。再次连接成功后远程 core 重新查询列表和统计。可选 `heartbeatTimeout` 启用 pong 超时检测;默认 0 保持既有仅发送心跳的兼容行为。
85
+
86
+ ```ts
87
+ const wsConfig = {
88
+ url: 'wss://your-service.example/notifications',
89
+ heartbeatInterval: 30_000,
90
+ heartbeatTimeout: 10_000,
91
+ getToken: () => currentAccessToken(),
92
+ }
93
+ ```
94
+
95
+ 桌面通知权限仅在应用调用 `requestDesktopPermission()` 的用户手势中申请。连接、轮询和缓存都不代表服务端保证交付:事件游标、历史补偿、跨设备一致性、幂等写入、审计与投递重试需要后端协议支持。应用也应在恢复可见、重新登录或切换公司时补刷,并对消息业务目标重新校验权限。
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.15.0",
6
+ "version": "0.16.0",
7
7
  "description": "基于 Naive UI 的 Vue 3 组件库",
8
8
  "packageManager": "bun@1.3.14",
9
9
  "engines": {