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

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 (225) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +12 -9
  3. package/README_EN.md +12 -9
  4. package/dist/C_ActionBar.css +56 -48
  5. package/dist/C_ActionBar2.cjs +1 -1
  6. package/dist/C_ActionBar2.js +1 -1
  7. package/dist/C_AntV2.cjs +1 -1
  8. package/dist/C_AntV2.js +3 -3
  9. package/dist/C_Barcode.css +6 -6
  10. package/dist/C_Barcode2.cjs +1 -1
  11. package/dist/C_Barcode2.js +1 -1
  12. package/dist/C_Chat.css +269 -185
  13. package/dist/C_Chat2.cjs +1 -1
  14. package/dist/C_Chat2.js +1 -1
  15. package/dist/C_Code.css +26 -26
  16. package/dist/C_Code2.cjs +1 -1
  17. package/dist/C_Code2.js +1 -1
  18. package/dist/C_Draggable2.cjs +1 -1
  19. package/dist/C_Draggable2.js +1 -1
  20. package/dist/C_FilePreview.css +96 -57
  21. package/dist/C_FilePreview2.cjs +1 -1
  22. package/dist/C_FilePreview2.js +1 -1
  23. package/dist/C_Form.base.css +295 -277
  24. package/dist/C_Form.css +295 -277
  25. package/dist/C_Form.d.cts +2 -1
  26. package/dist/C_Form.d.ts +2 -1
  27. package/dist/C_FormModal.css +10 -10
  28. package/dist/C_FormModal2.cjs +1 -1
  29. package/dist/C_FormModal2.js +1 -1
  30. package/dist/C_FormSearch.css +67 -68
  31. package/dist/C_FormSearch.d.cts +2 -1
  32. package/dist/C_FormSearch.d.ts +2 -1
  33. package/dist/C_FormSearch2.cjs +1 -1
  34. package/dist/C_FormSearch2.js +1 -1
  35. package/dist/C_FullCalendar2.cjs +1 -1
  36. package/dist/C_FullCalendar2.js +1 -1
  37. package/dist/C_GlobalSearch.css +140 -118
  38. package/dist/C_GlobalSearch2.cjs +1 -1
  39. package/dist/C_GlobalSearch2.js +1 -1
  40. package/dist/C_ImageCropper.css +12 -10
  41. package/dist/C_ImageCropper2.cjs +1 -1
  42. package/dist/C_ImageCropper2.js +1 -1
  43. package/dist/C_Login.css +79 -79
  44. package/dist/C_Login2.cjs +1 -1
  45. package/dist/C_Login2.js +1 -1
  46. package/dist/C_Map.css +10 -10
  47. package/dist/C_Map2.cjs +1 -1
  48. package/dist/C_Map2.js +1 -1
  49. package/dist/C_OrgChart.css +28 -4
  50. package/dist/C_OrgChart2.cjs +1 -1
  51. package/dist/C_OrgChart2.js +1 -1
  52. package/dist/C_QRCode2.cjs +1 -1
  53. package/dist/C_QRCode2.js +1 -1
  54. package/dist/C_Signature.css +15 -15
  55. package/dist/C_Signature2.cjs +1 -1
  56. package/dist/C_Signature2.js +1 -1
  57. package/dist/C_SplitPane.cjs +1 -1
  58. package/dist/C_SplitPane.css +251 -109
  59. package/dist/C_SplitPane.js +1 -1
  60. package/dist/C_SplitPane2.cjs +1 -1
  61. package/dist/C_SplitPane2.js +1 -1
  62. package/dist/C_Table.base.css +491 -563
  63. package/dist/C_Table.cjs +1 -1
  64. package/dist/C_Table.css +491 -563
  65. package/dist/C_Table.d.cts +3 -2
  66. package/dist/C_Table.d.ts +4 -2
  67. package/dist/C_Table.js +1 -1
  68. package/dist/C_TagsView2.cjs +1 -1
  69. package/dist/C_TagsView2.js +1 -1
  70. package/dist/C_Transfer.css +93 -84
  71. package/dist/C_Transfer2.cjs +1 -1
  72. package/dist/C_Transfer2.js +1 -1
  73. package/dist/C_Tree.css +72 -125
  74. package/dist/C_Tree.d.cts +3 -2
  75. package/dist/C_Tree.d.ts +15 -2
  76. package/dist/C_Tree2.cjs +1 -1
  77. package/dist/C_Tree2.js +1 -1
  78. package/dist/C_Upload.css +5 -5
  79. package/dist/C_Upload2.cjs +1 -1
  80. package/dist/C_Upload2.js +1 -1
  81. package/dist/C_VideoPlayer2.cjs +4 -3
  82. package/dist/C_VideoPlayer2.js +4 -3
  83. package/dist/C_VtableGantt.css +29 -28
  84. package/dist/C_VtableGantt2.cjs +1 -1
  85. package/dist/C_VtableGantt2.js +1 -1
  86. package/dist/C_WaterFall.css +29 -29
  87. package/dist/C_WaterFall2.cjs +1 -1
  88. package/dist/C_WaterFall2.js +1 -1
  89. package/dist/C_WorkFlow2.cjs +1 -1
  90. package/dist/C_WorkFlow2.js +1 -1
  91. package/dist/Card.cjs +1 -1
  92. package/dist/Card.js +1 -1
  93. package/dist/Custom.cjs +1 -1
  94. package/dist/Custom.js +1 -1
  95. package/dist/Dynamic.cjs +1 -1
  96. package/dist/Dynamic.js +1 -1
  97. package/dist/Steps.cjs +1 -1
  98. package/dist/Steps.js +1 -1
  99. package/dist/Tabs.cjs +1 -1
  100. package/dist/Tabs.js +1 -1
  101. package/dist/constants.d.cts +2 -2
  102. package/dist/constants.d.ts +2 -2
  103. package/dist/constants2.d.cts +2 -2
  104. package/dist/constants2.d.ts +2 -2
  105. package/dist/constants3.d.cts +2 -2
  106. package/dist/constants3.d.ts +2 -2
  107. package/dist/constants4.d.cts +4 -4
  108. package/dist/constants4.d.ts +4 -4
  109. package/dist/constants5.d.cts +3 -7
  110. package/dist/constants5.d.ts +3 -7
  111. package/dist/data.d.cts +10 -10
  112. package/dist/data.d.ts +10 -10
  113. package/dist/density.cjs +1 -0
  114. package/dist/density.d.cts +15 -0
  115. package/dist/density.d.ts +15 -0
  116. package/dist/density.js +1 -0
  117. package/dist/helpers.cjs +1 -1
  118. package/dist/helpers.js +1 -1
  119. package/dist/index.cjs +1 -1
  120. package/dist/index.d.cts +3 -3
  121. package/dist/index.d.ts +5 -3
  122. package/dist/index.js +1 -1
  123. package/dist/index.vue.d.cts +5 -5
  124. package/dist/index.vue.d.ts +5 -5
  125. package/dist/index10.vue.d.cts +5 -5
  126. package/dist/index10.vue.d.ts +3 -3
  127. package/dist/index11.vue.d.cts +3 -3
  128. package/dist/index11.vue.d.ts +5 -5
  129. package/dist/index12.vue.d.cts +5 -5
  130. package/dist/index13.vue.d.ts +5 -5
  131. package/dist/index14.vue.d.cts +5 -5
  132. package/dist/index14.vue.d.ts +9 -9
  133. package/dist/index15.vue.d.cts +9 -9
  134. package/dist/index15.vue.d.ts +3 -3
  135. package/dist/index16.vue.d.cts +3 -3
  136. package/dist/index17.vue.d.ts +1 -1
  137. package/dist/index18.vue.d.cts +1 -1
  138. package/dist/index18.vue.d.ts +7 -7
  139. package/dist/index19.vue.d.cts +7 -7
  140. package/dist/index19.vue.d.ts +5 -5
  141. package/dist/index2.vue.d.cts +2 -2
  142. package/dist/index2.vue.d.ts +2 -2
  143. package/dist/index20.vue.d.cts +6 -2
  144. package/dist/index20.vue.d.ts +6 -2
  145. package/dist/index21.vue.d.cts +2 -2
  146. package/dist/index21.vue.d.ts +2 -2
  147. package/dist/index22.vue.d.cts +2 -2
  148. package/dist/index22.vue.d.ts +2 -2
  149. package/dist/index23.vue.d.cts +2 -2
  150. package/dist/index23.vue.d.ts +2 -2
  151. package/dist/index25.vue.d.cts +5 -5
  152. package/dist/index25.vue.d.ts +5 -5
  153. package/dist/index27.vue.d.cts +2 -2
  154. package/dist/index27.vue.d.ts +2 -2
  155. package/dist/index28.vue.d.cts +7 -3
  156. package/dist/index28.vue.d.ts +7 -3
  157. package/dist/index3.vue.d.cts +3 -3
  158. package/dist/index3.vue.d.ts +3 -3
  159. package/dist/index4.vue.d.cts +5 -5
  160. package/dist/index5.vue.d.ts +2 -2
  161. package/dist/index6.vue.d.cts +2 -2
  162. package/dist/index6.vue.d.ts +7 -4
  163. package/dist/index7.vue.d.cts +7 -4
  164. package/dist/index7.vue.d.ts +2 -2
  165. package/dist/index8.vue.d.cts +2 -2
  166. package/dist/index8.vue.d.ts +4 -6
  167. package/dist/index9.vue.d.cts +4 -6
  168. package/dist/index9.vue.d.ts +5 -5
  169. package/dist/mapUtils.d.cts +4 -4
  170. package/dist/mapUtils.d.ts +4 -4
  171. package/dist/presets.d.cts +4 -1
  172. package/dist/presets.d.ts +4 -1
  173. package/dist/style.css +1763 -1566
  174. package/dist/useCalendarEvents.d.cts +10 -9
  175. package/dist/useCalendarEvents.d.ts +10 -9
  176. package/dist/useCollapsePanel.d.cts +3 -3
  177. package/dist/useCollapsePanel.d.ts +3 -3
  178. package/dist/useCropperCore.d.cts +9 -9
  179. package/dist/useCropperCore.d.ts +9 -9
  180. package/dist/useDraggableLayout.d.cts +15 -13
  181. package/dist/useDraggableLayout.d.ts +15 -13
  182. package/dist/useDynamicFormState.d.cts +5 -2
  183. package/dist/useDynamicFormState.d.ts +5 -2
  184. package/dist/useEdgeInteraction.d.cts +3 -3
  185. package/dist/useEdgeInteraction.d.ts +3 -3
  186. package/dist/useFullscreen.d.cts +4 -0
  187. package/dist/useFullscreen.d.ts +4 -0
  188. package/dist/useGlobalSearch.d.cts +9 -4
  189. package/dist/useGlobalSearch.d.ts +9 -4
  190. package/dist/useInfiniteScroll.d.cts +4 -1
  191. package/dist/useInfiniteScroll.d.ts +4 -1
  192. package/dist/useQRCode.d.cts +3 -3
  193. package/dist/useQRCode.d.ts +3 -3
  194. package/dist/useSearchState.d.cts +8 -6
  195. package/dist/useSearchState.d.ts +8 -6
  196. package/dist/useSignatureHistory.d.cts +7 -7
  197. package/dist/useSignatureHistory.d.ts +7 -7
  198. package/dist/useSplitResize.d.cts +50 -61
  199. package/dist/useSplitResize.d.ts +50 -61
  200. package/dist/useTableQuery.cjs +3 -3
  201. package/dist/useTableQuery.d.cts +237 -13
  202. package/dist/useTableQuery.d.ts +237 -13
  203. package/dist/useTableQuery.js +3 -3
  204. package/dist/useTimeSelection.d.cts +2 -2
  205. package/dist/useTimeSelection.d.ts +2 -2
  206. package/dist/useWorkflowValidation.d.cts +3 -3
  207. package/dist/useWorkflowValidation.d.ts +3 -3
  208. package/dist/verification.d.cts +5 -5
  209. package/dist/verification.d.ts +5 -5
  210. package/docs/component-review-20261019.md +55 -0
  211. package/docs/guides/form-density.en.md +42 -0
  212. package/docs/guides/form-density.md +59 -0
  213. package/docs/guides/runtime-performance.md +38 -0
  214. package/docs/guides/split-pane.en.md +103 -0
  215. package/docs/guides/split-pane.md +126 -0
  216. package/docs/guides/table-density.md +87 -0
  217. package/docs/guides/transfer.md +11 -0
  218. package/docs/guides/tree.md +157 -0
  219. package/docs/guides/usage.en.md +2 -0
  220. package/docs/guides/usage.md +2 -0
  221. package/docs/runtime-review-20261019.md +41 -0
  222. package/docs/wl-ui-produce-coverage.md +62 -0
  223. package/package.json +4 -2
  224. package/dist/useTreeOperations.d.cts +0 -185
  225. package/dist/useTreeOperations.d.ts +0 -185
package/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # @robot-admin/naive-ui-components
2
2
 
3
+ ## 0.17.1
4
+
5
+ ### Patch Changes
6
+
7
+ - ace86bc: 地图标记改为内置矢量图标,避免 CSS 资源重命名后 Leaflet 自动探测失效。组织架构增加 fitOnInit 和 fitView,按真实节点尺寸适配视野,支持容器变化及卸载清理。
8
+
9
+ 文件预览增加 inline 容器内阅读模式,保持原有弹窗默认用法。PDF 使用浏览器原生阅读器进行翻页、缩放与打印,移除固定一页及未作用到 iframe 的重复控件。组织架构的自定义节点插槽透传到全部层级。上传 change 事件同步发送状态、进度与暂停恢复的独立快照,支持宿主自定义队列。
10
+
11
+ 甘特图修复原生任务条、任务表点击及日期、进度、单元格编辑事件桥接,并正确合并配置中的表格主题、注册默认文字和日期编辑器,保留宿主已有注册。瀑布流按卡片实际高度布局,避免标题和自定义内容被下一行素材遮挡。
12
+
13
+ - 73cda31: 为穿梭框、聊天消息/联系人和全局搜索复用公开虚拟列表引擎,默认减少大列表 DOM,保留完整选择与键盘语义。完善聊天历史锚点、流式与迟到图片滚底、面板尺寸变化、模式切换和输入法确认。
14
+
15
+ 缓存菜单搜索索引及字幕时间索引;合并瀑布流同帧图片布局并丢弃过期测量。修复代码语言异步高亮与复制快照,二维码任务支持独立导出快照、Logo 主动取消及卸载清理。保持 Naive UI 2.35 兼容和既有按需入口。
16
+
17
+ - 65e9b81: 完善分割面板手柄质感与可操作性:细轨道搭配居中胶囊握柄、轻阴影和局部状态高亮;折叠按钮靠近握柄,触屏及折叠状态持续可见。保留现有布局间距与 API,胶囊溢出轨道部分可真实拖动,折叠边缘避免裁切,箭头使用不依赖网络的内联 SVG。
18
+ - c8f1934: 收敛表格展开、选择和序号列默认宽度,用自然弹性业务列吸收剩余空间,保留显式列元数据和布局覆盖;修正自动横向滚动与响应式显示配置。为批量展开和程序化跨页选择建立惰性索引,树行遍历改为迭代。
19
+
20
+ 修复图库实例深代理、甘特图重复初始化、表单脏检查短路与嵌套集合追踪,以及登录、裁剪、签名、工作流、字幕的异步边界。完善固定标签批量关闭、聊天历史滚动、条码参数和拖拽业务事件身份,保持现有公开接入方式。
21
+
22
+ ## 0.17.0
23
+
24
+ ### Minor Changes
25
+
26
+ - 统一表单、搜索、表格的 default/compact/comfortable 密度,补齐布局、编辑器、分页与按钮尺寸,保留显式配置优先级与未配置时的原有布局。
27
+
28
+ 表格支持 edit 字符串简写,切换编辑模式清理旧草稿并阻止旧保存结果回写;密度切换保留草稿。修复默认上传按钮和搜索配置变更重置输入的问题。
29
+
30
+ 修复 CRUD 编辑按钮误调用保存适配器的问题:点击编辑只进入编辑态,确认后才自动保存;显式自定义编辑入口保持优先。
31
+
32
+ 分割面板新增受控 size、像素最小尺寸、嵌套多表作用域插槽和完整拖拽/键盘清理;树新增受控选择/展开/勾选、treeProps 原生能力聚合、可清空受控搜索、虚拟滚动密度与主题适配。
33
+
34
+ 补充真实组件挂载、消费者类型和独立导入验证,以及 wl-ui-produce 场景覆盖与迁移边界说明。
35
+
36
+ ### Patch Changes
37
+
38
+ - 68a96a1: 为日历补充响应式工作区配置,并补齐及隔离图片裁剪器的画布、遮罩与拖动手柄样式。
39
+
40
+ - c4cc5b2: 修复 C_ActionBar 换行未作用于组内按钮的问题,并让紧凑配置在行内模式下通过默认按钮间距即时生效。显式 gap 保持优先,透传按钮尺寸与图标尺寸同步。
41
+
3
42
  ## 0.16.0
4
43
 
5
44
  ### Minor Changes
package/README.md CHANGED
@@ -160,15 +160,18 @@ Resolver 默认解析到组件子路径;`importStyle` 默认是 `false`,需
160
160
 
161
161
  ## 文档导航
162
162
 
163
- | 文档 | 内容 |
164
- | ------------------------------------ | ---------------------------------------------------------------- |
165
- | [架构与隔离](./docs/architecture.md) | 依赖边界、实例所有权与独立 Element Plus 演进路线 |
166
- | [组件目录](./docs/components.md) | 55 个组件、外部依赖与各组件的使用边界 |
167
- | [使用指南](./docs/guides/usage.md) | 导入、表单表格、Cron/公式、地图、引导、人机验证、登录与页面加载 |
168
- | [开发与构建](./docs/engineering.md) | 工程结构、六阶段构建、组件扩展、校验与发布流程 |
169
- | [品牌资源](./docs/assets/README.md) | Robot 系列 Logo、可编辑 SVG 与高清 PNG 封面 |
170
- | [变更记录](./CHANGELOG.md) | 版本更新与兼容变化 |
171
- | [安全策略](./SECURITY.md) | 漏洞报告与维护约定 |
163
+ | 文档 | 内容 |
164
+ | -------------------------------------------------------- | ---------------------------------------------------------------- |
165
+ | [架构与隔离](./docs/architecture.md) | 依赖边界、实例所有权与独立 Element Plus 演进路线 |
166
+ | [组件目录](./docs/components.md) | 55 个组件、外部依赖与各组件的使用边界 |
167
+ | [使用指南](./docs/guides/usage.md) | 导入、表单表格、Cron/公式、地图、引导、人机验证、登录与页面加载 |
168
+ | [密度与多表工作台](./docs/guides/table-density.md) | 表单/搜索/表格统一密度、编辑模式、分屏与树能力 |
169
+ | [大列表与异步任务](./docs/guides/runtime-performance.md) | 自动窗口化、聊天滚动、搜索索引、字幕与图片任务 |
170
+ | [真实场景覆盖](./docs/wl-ui-produce-coverage.md) | wl-ui-produce 对照、可组合能力与需要适配的边界 |
171
+ | [开发与构建](./docs/engineering.md) | 工程结构、六阶段构建、组件扩展、校验与发布流程 |
172
+ | [品牌资源](./docs/assets/README.md) | Robot 系列 Logo、可编辑 SVG 与高清 PNG 封面 |
173
+ | [变更记录](./CHANGELOG.md) | 版本更新与兼容变化 |
174
+ | [安全策略](./SECURITY.md) | 漏洞报告与维护约定 |
172
175
 
173
176
  本轮依赖审计的两项上游告警见 [2026-10-18 扫描记录](./docs/security-scan-2026-10-18.md);[2026-10-06 记录](./docs/security-scan-2026-10-06.md)保留为历史档案。当前依赖状态以实际运行 `bun run check:audit` 的结果为准。
174
177
 
package/README_EN.md CHANGED
@@ -160,15 +160,18 @@ Root imports aggregate navigation components and require `vue-router` at runtime
160
160
 
161
161
  ## Documentation
162
162
 
163
- | Document | Contents |
164
- | ------------------------------------------------------- | --------------------------------------------------------------------------------------- |
165
- | [Architecture and isolation](./docs/architecture.en.md) | Dependency boundaries, instance ownership and the independent Element Plus roadmap |
166
- | [Component catalog](./docs/components.en.md) | All 55 components, dependencies and behavior boundaries |
167
- | [Usage guide](./docs/guides/usage.en.md) | Imports, forms/tables, Cron/formulas, maps, onboarding, captcha, login and page loading |
168
- | [Development and build](./docs/engineering.en.md) | Source structure, six-stage build, adding components, checks and releases |
169
- | [Brand assets](./docs/assets/README.md) | Robot family logo, editable SVG sources and high-resolution PNGs |
170
- | [Changelog](./CHANGELOG.md) | Releases and compatibility changes |
171
- | [Security policy](./SECURITY.md) | Vulnerability reporting and maintenance policy |
163
+ | Document | Contents |
164
+ | -------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
165
+ | [Architecture and isolation](./docs/architecture.en.md) | Dependency boundaries, instance ownership and the independent Element Plus roadmap |
166
+ | [Component catalog](./docs/components.en.md) | All 55 components, dependencies and behavior boundaries |
167
+ | [Usage guide](./docs/guides/usage.en.md) | Imports, forms/tables, Cron/formulas, maps, onboarding, captcha, login and page loading |
168
+ | [Density and workbenches](./docs/guides/table-density.md) | Shared form/search/table density, edit modes, split panes and tree capabilities (Chinese) |
169
+ | [Lists and async tasks](./docs/guides/runtime-performance.md) | Automatic list windows, chat scrolling, search indexes and media task ownership (Chinese) |
170
+ | [Production coverage review](./docs/wl-ui-produce-coverage.md) | wl-ui-produce capability mapping and adapter boundaries (Chinese) |
171
+ | [Development and build](./docs/engineering.en.md) | Source structure, six-stage build, adding components, checks and releases |
172
+ | [Brand assets](./docs/assets/README.md) | Robot family logo, editable SVG sources and high-resolution PNGs |
173
+ | [Changelog](./CHANGELOG.md) | Releases and compatibility changes |
174
+ | [Security policy](./SECURITY.md) | Vulnerability reporting and maintenance policy |
172
175
 
173
176
  The [2026-10-18 scan record](./docs/security-scan-2026-10-18.md) documents two outstanding upstream advisories; the [2026-10-06 record](./docs/security-scan-2026-10-06.md) is a historical archive. Both are in Chinese. Run `bun run check:audit` to assess the current dependency state.
174
177
 
@@ -67,8 +67,9 @@
67
67
 
68
68
  /* 通用操作按钮组件样式 */
69
69
  /* ================= 主容器 ================= */
70
- .c-action-bar[data-v-3c85fa90] {
70
+ .c-action-bar[data-v-48eb3073] {
71
71
  display: flex;
72
+ min-width: 0;
72
73
  align-items: center;
73
74
  justify-content: space-between;
74
75
  padding: 16px;
@@ -78,26 +79,26 @@
78
79
  border: 1px solid var(--c-border);
79
80
  transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
80
81
  }
81
- .c-action-bar.is-align-left[data-v-3c85fa90] {
82
+ .c-action-bar.is-align-left[data-v-48eb3073] {
82
83
  justify-content: flex-start;
83
84
  }
84
- .c-action-bar.is-align-center[data-v-3c85fa90] {
85
+ .c-action-bar.is-align-center[data-v-48eb3073] {
85
86
  justify-content: center;
86
87
  }
87
- .c-action-bar.is-align-right[data-v-3c85fa90] {
88
+ .c-action-bar.is-align-right[data-v-48eb3073] {
88
89
  justify-content: flex-end;
89
90
  }
90
- .c-action-bar.is-align-space-between[data-v-3c85fa90] {
91
+ .c-action-bar.is-align-space-between[data-v-48eb3073] {
91
92
  justify-content: space-between;
92
93
  }
93
- .c-action-bar.is-align-space-around[data-v-3c85fa90] {
94
+ .c-action-bar.is-align-space-around[data-v-48eb3073] {
94
95
  justify-content: space-around;
95
96
  }
96
- .c-action-bar.is-compact[data-v-3c85fa90] {
97
+ .c-action-bar.is-compact[data-v-48eb3073] {
97
98
  padding: 8px;
98
99
  margin-bottom: 8px;
99
100
  }
100
- .c-action-bar.is-inline[data-v-3c85fa90] {
101
+ .c-action-bar.is-inline[data-v-48eb3073] {
101
102
  padding: 0;
102
103
  margin-bottom: 0;
103
104
  background: transparent;
@@ -105,97 +106,104 @@
105
106
  border-radius: 0;
106
107
  box-shadow: none;
107
108
  }
108
- .c-action-bar.is-wrap[data-v-3c85fa90] {
109
+ .c-action-bar.is-wrap[data-v-48eb3073] {
109
110
  flex-wrap: wrap;
110
111
  gap: 8px;
111
112
  }
113
+ .c-action-bar.is-wrap .actions-group[data-v-48eb3073] {
114
+ flex-wrap: wrap;
115
+ min-width: 0;
116
+ max-width: 100%;
117
+ }
112
118
  @media (max-width: 768px) {
113
- .c-action-bar[data-v-3c85fa90] {
119
+ .c-action-bar[data-v-48eb3073] {
114
120
  flex-direction: column;
115
121
  gap: 12px;
116
122
  }
117
- .c-action-bar .actions-group[data-v-3c85fa90] {
123
+ .c-action-bar .actions-group[data-v-48eb3073] {
118
124
  width: 100%;
119
125
  justify-content: center;
120
126
  }
121
127
  }
122
128
 
123
129
  /* ================= 按钮组 ================= */
124
- .actions-group[data-v-3c85fa90] {
130
+ .actions-group[data-v-48eb3073] {
125
131
  display: flex;
126
132
  align-items: center;
127
133
  gap: 12px;
128
134
  flex-wrap: nowrap;
135
+ flex-shrink: 0;
129
136
  }
130
- .actions-group.actions-left[data-v-3c85fa90] {
137
+ .actions-group.actions-left[data-v-48eb3073] {
131
138
  justify-content: flex-start;
132
139
  }
133
- .actions-group.actions-right[data-v-3c85fa90] {
140
+ .actions-group.actions-right[data-v-48eb3073] {
134
141
  justify-content: flex-end;
135
142
  }
136
- .c-action-bar.has-only-left.is-align-center .actions-group.actions-left[data-v-3c85fa90], .c-action-bar.has-only-right.is-align-center .actions-group.actions-right[data-v-3c85fa90] {
143
+ .c-action-bar.has-only-left.is-align-center .actions-group.actions-left[data-v-48eb3073], .c-action-bar.has-only-right.is-align-center .actions-group.actions-right[data-v-48eb3073] {
137
144
  width: 100%;
138
145
  justify-content: center;
139
146
  }
140
- .c-action-bar.has-only-left.is-align-space-between .actions-group.actions-left[data-v-3c85fa90], .c-action-bar.has-only-right.is-align-space-between .actions-group.actions-right[data-v-3c85fa90] {
147
+ .c-action-bar.has-only-left.is-align-space-between .actions-group.actions-left[data-v-48eb3073], .c-action-bar.has-only-right.is-align-space-between .actions-group.actions-right[data-v-48eb3073] {
141
148
  width: 100%;
142
149
  justify-content: space-between;
143
150
  }
144
- .c-action-bar.has-only-left.is-align-space-around .actions-group.actions-left[data-v-3c85fa90], .c-action-bar.has-only-right.is-align-space-around .actions-group.actions-right[data-v-3c85fa90] {
151
+ .c-action-bar.has-only-left.is-align-space-around .actions-group.actions-left[data-v-48eb3073], .c-action-bar.has-only-right.is-align-space-around .actions-group.actions-right[data-v-48eb3073] {
145
152
  width: 100%;
146
153
  justify-content: space-around;
147
154
  }
148
- .c-action-bar.has-only-left.is-align-right .actions-group.actions-left[data-v-3c85fa90] {
155
+ .c-action-bar.has-only-left.is-align-right .actions-group.actions-left[data-v-48eb3073] {
149
156
  width: 100%;
150
157
  justify-content: flex-end;
151
158
  }
152
- .c-action-bar.has-only-right.is-align-left .actions-group.actions-right[data-v-3c85fa90] {
159
+ .c-action-bar.has-only-right.is-align-left .actions-group.actions-right[data-v-48eb3073] {
153
160
  width: 100%;
154
161
  justify-content: flex-start;
155
162
  }
156
- .actions-group[data-v-3c85fa90] .n-button {
163
+ .actions-group[data-v-48eb3073] .n-button {
164
+ flex-shrink: 0;
157
165
  transition: color 0.16s ease, background-color 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
158
166
  font-weight: 500;
159
167
  }
160
- .actions-group[data-v-3c85fa90] .n-button .n-icon {
168
+ .actions-group[data-v-48eb3073] .n-button .n-icon {
161
169
  transition: transform 0.3s ease;
162
170
  }
163
- .actions-group[data-v-3c85fa90] .n-button:hover:not(:disabled) {
171
+ .actions-group[data-v-48eb3073] .n-button:hover:not(:disabled) {
164
172
  transform: translateY(-1px);
165
173
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
166
174
  }
167
- .actions-group[data-v-3c85fa90] .n-button:hover:not(:disabled) .n-icon {
175
+ .actions-group[data-v-48eb3073] .n-button:hover:not(:disabled) .n-icon {
168
176
  transform: scale(1.1);
169
177
  }
170
- .actions-group[data-v-3c85fa90] .n-button:active:not(:disabled) {
178
+ .actions-group[data-v-48eb3073] .n-button:active:not(:disabled) {
171
179
  transform: translateY(0);
172
180
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
173
181
  }
174
- .actions-group[data-v-3c85fa90] .n-button:disabled {
182
+ .actions-group[data-v-48eb3073] .n-button:disabled {
175
183
  cursor: not-allowed;
176
184
  opacity: 0.5;
177
185
  }
178
- .actions-group[data-v-3c85fa90] .n-button.n-button--loading {
186
+ .actions-group[data-v-48eb3073] .n-button.n-button--loading {
179
187
  pointer-events: none;
180
188
  }
181
- .actions-group[data-v-3c85fa90] .n-button--primary-type:hover:not(:disabled) {
189
+ .actions-group[data-v-48eb3073] .n-button--primary-type:hover:not(:disabled) {
182
190
  box-shadow: 0 4px 12px rgba(24, 160, 88, 0.3);
183
191
  }
184
- .actions-group[data-v-3c85fa90] .n-button--info-type:hover:not(:disabled) {
192
+ .actions-group[data-v-48eb3073] .n-button--info-type:hover:not(:disabled) {
185
193
  box-shadow: 0 4px 12px rgba(42, 148, 125, 0.3);
186
194
  }
187
- .actions-group[data-v-3c85fa90] .n-button--success-type:hover:not(:disabled) {
195
+ .actions-group[data-v-48eb3073] .n-button--success-type:hover:not(:disabled) {
188
196
  box-shadow: 0 4px 12px rgba(99, 226, 183, 0.3);
189
197
  }
190
- .actions-group[data-v-3c85fa90] .n-button--warning-type:hover:not(:disabled) {
198
+ .actions-group[data-v-48eb3073] .n-button--warning-type:hover:not(:disabled) {
191
199
  box-shadow: 0 4px 12px rgba(240, 138, 0, 0.3);
192
200
  }
193
- .actions-group[data-v-3c85fa90] .n-button--error-type:hover:not(:disabled) {
201
+ .actions-group[data-v-48eb3073] .n-button--error-type:hover:not(:disabled) {
194
202
  box-shadow: 0 4px 12px rgba(208, 48, 80, 0.3);
195
203
  }
196
204
 
197
205
  /* ================= 中间插槽区域 ================= */
198
- .actions-center[data-v-3c85fa90] {
206
+ .actions-center[data-v-48eb3073] {
199
207
  display: flex;
200
208
  align-items: center;
201
209
  justify-content: center;
@@ -205,32 +213,32 @@
205
213
  }
206
214
 
207
215
  /* ================= 分隔线 ================= */
208
- .action-divider[data-v-3c85fa90] {
216
+ .action-divider[data-v-48eb3073] {
209
217
  margin: 0 8px !important;
210
218
  height: 20px;
211
219
  opacity: 0.3;
212
220
  transition: opacity 0.3s ease;
213
221
  }
214
- .action-divider[data-v-3c85fa90]:hover {
222
+ .action-divider[data-v-48eb3073]:hover {
215
223
  opacity: 0.6;
216
224
  }
217
225
 
218
226
  /* ================= 下拉菜单优化 ================= */
219
- [data-v-3c85fa90] .n-dropdown-option {
227
+ [data-v-48eb3073] .n-dropdown-option {
220
228
  transition: all 0.2s ease;
221
229
  }
222
- [data-v-3c85fa90] .n-dropdown-option:hover {
230
+ [data-v-48eb3073] .n-dropdown-option:hover {
223
231
  transform: translateX(4px);
224
232
  }
225
- [data-v-3c85fa90] .n-dropdown-option .n-icon {
233
+ [data-v-48eb3073] .n-dropdown-option .n-icon {
226
234
  transition: transform 0.2s ease;
227
235
  }
228
- [data-v-3c85fa90] .n-dropdown-option:hover .n-icon {
236
+ [data-v-48eb3073] .n-dropdown-option:hover .n-icon {
229
237
  transform: scale(1.15);
230
238
  }
231
239
 
232
240
  /* ================= 加载动画 ================= */
233
- @keyframes button-loading-3c85fa90 {
241
+ @keyframes button-loading-48eb3073 {
234
242
  0% {
235
243
  opacity: 0.6;
236
244
  }
@@ -241,12 +249,12 @@
241
249
  opacity: 0.6;
242
250
  }
243
251
  }
244
- [data-v-3c85fa90] .n-button--loading {
245
- animation: button-loading-3c85fa90 1.5s ease-in-out infinite;
252
+ [data-v-48eb3073] .n-button--loading {
253
+ animation: button-loading-48eb3073 1.5s ease-in-out infinite;
246
254
  }
247
255
 
248
256
  /* ================= Tooltip 样式 ================= */
249
- [data-v-3c85fa90] .n-tooltip .n-tooltip__content {
257
+ [data-v-48eb3073] .n-tooltip .n-tooltip__content {
250
258
  font-size: 12px;
251
259
  padding: 6px 10px;
252
260
  border-radius: 4px;
@@ -255,20 +263,20 @@
255
263
  }
256
264
 
257
265
  /* ================= 暗黑模式适配 ================= */
258
- html.dark .c-action-bar[data-v-3c85fa90] {
266
+ html.dark .c-action-bar[data-v-48eb3073] {
259
267
  border-color: rgba(255, 255, 255, 0.09);
260
268
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
261
269
  }
262
- html.dark .actions-group[data-v-3c85fa90] .n-button:hover:not(:disabled) {
270
+ html.dark .actions-group[data-v-48eb3073] .n-button:hover:not(:disabled) {
263
271
  box-shadow: 0 4px 12px rgba(255, 255, 255, 0.1);
264
272
  }
265
- html.dark .action-divider[data-v-3c85fa90] {
273
+ html.dark .action-divider[data-v-48eb3073] {
266
274
  opacity: 0.15;
267
275
  }
268
- html.dark .action-divider[data-v-3c85fa90]:hover {
276
+ html.dark .action-divider[data-v-48eb3073]:hover {
269
277
  opacity: 0.4;
270
278
  }
271
279
 
272
280
  /* layer: default */
273
- .inline[data-v-3c85fa90]{display:inline;}
274
- .px[data-v-3c85fa90]{padding-left:1rem;padding-right:1rem;}
281
+ .inline[data-v-48eb3073]{display:inline;}
282
+ .px[data-v-48eb3073]{padding-left:1rem;padding-right:1rem;}
@@ -1 +1 @@
1
- require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`),n=require(`./useActionTask.cjs`);let r=require(`vue`),i=require(`naive-ui`);const a=`mdi:gesture-tap-button`,o={align:`left`,size:`tiny`,gap:6,wrap:!1,showDivider:!1,dividerType:`vertical`,compact:!0,inline:!0},s={add:{label:`新增`,icon:`mdi:plus`,type:`primary`},create:{label:`新增`,icon:`mdi:plus`,type:`primary`},save:{label:`保存`,icon:`mdi:content-save-outline`,type:`primary`},confirm:{label:`确认`,icon:`mdi:check`,type:`primary`},cancel:{label:`取消`,icon:`mdi:close`},close:{label:`关闭`,icon:`mdi:close`},view:{label:`查看`,icon:`mdi:eye-outline`},edit:{label:`编辑`,icon:`mdi:pencil-outline`},delete:{label:`删除`,icon:`mdi:delete-outline`,type:`error`},remove:{label:`删除`,icon:`mdi:delete-outline`,type:`error`},refresh:{label:`刷新`,icon:`mdi:refresh`},import:{label:`导入`,icon:`mdi:file-import-outline`},export:{label:`导出`,icon:`mdi:file-export-outline`},print:{label:`打印`,icon:`mdi:printer-outline`},reset:{label:`重置`,icon:`mdi:restore`},columns:{label:`列设置`,icon:`mdi:view-column-outline`},fullscreen:{label:`全屏`,icon:`mdi:fullscreen`},settings:{label:`功能配置`,icon:`mdi:tune-variant`},more:{label:`更多`,icon:`mdi:dots-horizontal`}},c=e=>{let t=e.key?s[e.key]:void 0;return{...t,...e,label:e.label||t?.label||e.key||`操作`,icon:e.icon||t?.icon||a}},l=e=>typeof e==`function`?e():(0,r.unref)(e),u=e=>e,d={key:1,class:`actions-center`},f=(0,r.defineComponent)({name:`C_ActionBar`,__name:`index`,props:{actions:{default:()=>[]},leftActions:{default:()=>[]},rightActions:{default:()=>[]},config:{default:()=>({})}},emits:[`action-click`,`dropdown-click`,`action-error`],setup(t,{emit:a}){let s=t,u=a,f=(0,r.computed)(()=>({...o,...s.config})),p=(0,r.computed)(()=>{if(s.leftActions&&s.leftActions.length>0)return s.leftActions.filter(e=>h(e));if(s.actions.length>0){let e=s.rightActions&&s.rightActions.length>0,t=s.actions.some(e=>e.group===`right`);return!e&&!t?s.actions.filter(e=>h(e)):s.actions.filter(e=>e.group!==`right`&&h(e))}return[]}),m=(0,r.computed)(()=>s.rightActions&&s.rightActions.length>0?s.rightActions.filter(e=>h(e)):s.actions.filter(e=>e.group===`right`&&h(e))),h=e=>e.show===void 0?!0:l(e.show)??!0,g=(e,t)=>{let n=new Map;return e.map((e,r)=>{let i=JSON.stringify(e.key===void 0?[`position`,t,r]:[`key`,e.key]),a=n.get(i)??0;return n.set(i,a+1),{action:e,taskKey:i,renderKey:`${i}:${a}`}})},_=(0,r.computed)(()=>g(p.value,`left`)),v=(0,r.computed)(()=>g(m.value,`right`)),y=n.t(),b=(e,t)=>!!(l(e.disabled)||e.buttonProps?.disabled||y.isRunning(t)),x=(e,t)=>!!(l(e.loading)||e.buttonProps?.loading||e.autoLoading!==!1&&y.isRunning(t)),S=async({action:e,taskKey:t})=>{if(!(e.dropdown&&e.dropdown.length>0))try{await y.run(t,async()=>{u(`action-click`,e),await e.onClick?.()},()=>!b(e,t)&&!x(e,t))}catch(t){throw u(`action-error`,t,e),t}},C=async(e,{action:t,taskKey:n})=>{try{await y.run(n,async()=>{u(`dropdown-click`,e,t),await e.onClick?.()},()=>!b(t,n)&&!x(t,n)&&l(e.disabled)!==!0&&l(e.show)!==!1)}catch(n){throw u(`action-error`,n,t,e),n}},w=(0,r.defineComponent)({name:`ActionButton`,props:{action:{type:Object,required:!0},taskKey:{type:String,required:!0}},emits:[`click`,`dropdown-select`],setup(t,{emit:n}){let a=(0,r.computed)(()=>t.action),o=(0,r.computed)(()=>c(a.value)),s=(0,r.computed)(()=>o.value.size||f.value.size),u=(0,r.computed)(()=>({tiny:14,small:15,medium:16,large:18})[s.value]),d=(0,r.computed)(()=>o.value.dropdown?o.value.dropdown.filter(e=>e.show===void 0?!0:l(e.show)).map(n=>{let{icon:i}=n;return{key:n.key,label:n.label,icon:i?()=>(0,r.h)(e.t,{name:i,size:14,"aria-hidden":!0}):void 0,disabled:b(a.value,t.taskKey)||x(a.value,t.taskKey)||l(n.disabled)}}):[]),p=e=>{let r=o.value.dropdown?.find(t=>t.key===e);r&&!b(a.value,t.taskKey)&&!x(a.value,t.taskKey)&&l(r.disabled)!==!0&&l(r.show)!==!1&&n(`dropdown-select`,r)},m=n=>{let{icon:c,buttonProps:l}=o.value,d=e=>{if(b(a.value,t.taskKey)||x(a.value,t.taskKey))return;n?.();let r=l?.onClick;Array.isArray(r)?r.forEach(t=>t(e)):r?.(e)},f=(0,r.h)(i.NButton,{type:o.value.type||`default`,size:s.value,...l,loading:x(a.value,t.taskKey),disabled:b(a.value,t.taskKey),onClick:d},{default:()=>o.value.label,icon:c?()=>(0,r.h)(e.t,{name:c,size:u.value,"aria-hidden":!0}):void 0});return o.value.directives&&o.value.directives.length>0?(0,r.withDirectives)(f,o.value.directives):f},h=()=>{let e=m(()=>n(`click`));return o.value.tooltip?(0,r.h)(i.NTooltip,{placement:`top`},{trigger:()=>e,default:()=>o.value.tooltip}):e},g=()=>{let e=m();return(0,r.h)(i.NDropdown,{disabled:b(a.value,t.taskKey)||x(a.value,t.taskKey),options:d.value,onSelect:p},{default:()=>e})};return()=>o.value.dropdown&&o.value.dropdown.length>0?g():h()}});return(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{class:(0,r.normalizeClass)([`c-action-bar`,{"is-compact":f.value.compact,"is-inline":f.value.inline,"is-wrap":f.value.wrap,[`is-align-${f.value.align}`]:!0,"has-only-left":_.value.length>0&&v.value.length===0&&!e.$slots.center,"has-only-right":v.value.length>0&&_.value.length===0&&!e.$slots.center}])},[_.value.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:0,class:`actions-group actions-left`,style:(0,r.normalizeStyle)({gap:`${f.value.gap}px`})},[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(_.value,(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:e.renderKey},[(0,r.createVNode)((0,r.unref)(w),{action:e.action,"task-key":e.taskKey,onClick:t=>S(e),onDropdownSelect:t=>C(t,e)},null,8,[`action`,`task-key`,`onClick`,`onDropdownSelect`]),f.value.showDivider&&t<_.value.length-1&&f.value.dividerType===`vertical`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NDivider),{key:0,vertical:``,class:`action-divider`})):(0,r.createCommentVNode)(`v-if`,!0)],64))),128))],4)):(0,r.createCommentVNode)(`v-if`,!0),e.$slots.center?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,d,[(0,r.renderSlot)(e.$slots,`center`,{},void 0,!0)])):(0,r.createCommentVNode)(`v-if`,!0),v.value.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:2,class:`actions-group actions-right`,style:(0,r.normalizeStyle)({gap:`${f.value.gap}px`})},[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(v.value,(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:e.renderKey},[(0,r.createVNode)((0,r.unref)(w),{action:e.action,"task-key":e.taskKey,onClick:t=>S(e),onDropdownSelect:t=>C(t,e)},null,8,[`action`,`task-key`,`onClick`,`onDropdownSelect`]),f.value.showDivider&&t<v.value.length-1&&f.value.dividerType===`vertical`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NDivider),{key:0,vertical:``,class:`action-divider`})):(0,r.createCommentVNode)(`v-if`,!0)],64))),128))],4)):(0,r.createCommentVNode)(`v-if`,!0)],2))}});var p=t.t(f,[[`__scopeId`,`data-v-3c85fa90`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return p}});
1
+ require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`),n=require(`./useActionTask.cjs`);let r=require(`vue`),i=require(`naive-ui`);const a=`mdi:gesture-tap-button`,o={align:`left`,size:`tiny`,gap:6,wrap:!1,showDivider:!1,dividerType:`vertical`,compact:!0,inline:!0},s={add:{label:`新增`,icon:`mdi:plus`,type:`primary`},create:{label:`新增`,icon:`mdi:plus`,type:`primary`},save:{label:`保存`,icon:`mdi:content-save-outline`,type:`primary`},confirm:{label:`确认`,icon:`mdi:check`,type:`primary`},cancel:{label:`取消`,icon:`mdi:close`},close:{label:`关闭`,icon:`mdi:close`},view:{label:`查看`,icon:`mdi:eye-outline`},edit:{label:`编辑`,icon:`mdi:pencil-outline`},delete:{label:`删除`,icon:`mdi:delete-outline`,type:`error`},remove:{label:`删除`,icon:`mdi:delete-outline`,type:`error`},refresh:{label:`刷新`,icon:`mdi:refresh`},import:{label:`导入`,icon:`mdi:file-import-outline`},export:{label:`导出`,icon:`mdi:file-export-outline`},print:{label:`打印`,icon:`mdi:printer-outline`},reset:{label:`重置`,icon:`mdi:restore`},columns:{label:`列设置`,icon:`mdi:view-column-outline`},fullscreen:{label:`全屏`,icon:`mdi:fullscreen`},settings:{label:`功能配置`,icon:`mdi:tune-variant`},more:{label:`更多`,icon:`mdi:dots-horizontal`}},c=e=>{let t=e.key?s[e.key]:void 0;return{...t,...e,label:e.label||t?.label||e.key||`操作`,icon:e.icon||t?.icon||a}},l=e=>typeof e==`function`?e():(0,r.unref)(e),u=e=>e,d={key:1,class:`actions-center`},f=(0,r.defineComponent)({name:`C_ActionBar`,__name:`index`,props:{actions:{default:()=>[]},leftActions:{default:()=>[]},rightActions:{default:()=>[]},config:{default:()=>({})}},emits:[`action-click`,`dropdown-click`,`action-error`],setup(t,{emit:a}){let s=t,u=a,f=(0,r.computed)(()=>({...o,...s.config,gap:s.config.gap??(s.config.compact===!1?12:o.gap)})),p=(0,r.computed)(()=>{if(s.leftActions&&s.leftActions.length>0)return s.leftActions.filter(e=>h(e));if(s.actions.length>0){let e=s.rightActions&&s.rightActions.length>0,t=s.actions.some(e=>e.group===`right`);return!e&&!t?s.actions.filter(e=>h(e)):s.actions.filter(e=>e.group!==`right`&&h(e))}return[]}),m=(0,r.computed)(()=>s.rightActions&&s.rightActions.length>0?s.rightActions.filter(e=>h(e)):s.actions.filter(e=>e.group===`right`&&h(e))),h=e=>e.show===void 0?!0:l(e.show)??!0,g=(e,t)=>{let n=new Map;return e.map((e,r)=>{let i=JSON.stringify(e.key===void 0?[`position`,t,r]:[`key`,e.key]),a=n.get(i)??0;return n.set(i,a+1),{action:e,taskKey:i,renderKey:`${i}:${a}`}})},_=(0,r.computed)(()=>g(p.value,`left`)),v=(0,r.computed)(()=>g(m.value,`right`)),y=n.t(),b=(e,t)=>!!(l(e.disabled)||e.buttonProps?.disabled||y.isRunning(t)),x=(e,t)=>!!(l(e.loading)||e.buttonProps?.loading||e.autoLoading!==!1&&y.isRunning(t)),S=async({action:e,taskKey:t})=>{if(!(e.dropdown&&e.dropdown.length>0))try{await y.run(t,async()=>{u(`action-click`,e),await e.onClick?.()},()=>!b(e,t)&&!x(e,t))}catch(t){throw u(`action-error`,t,e),t}},C=async(e,{action:t,taskKey:n})=>{try{await y.run(n,async()=>{u(`dropdown-click`,e,t),await e.onClick?.()},()=>!b(t,n)&&!x(t,n)&&l(e.disabled)!==!0&&l(e.show)!==!1)}catch(n){throw u(`action-error`,n,t,e),n}},w=(0,r.defineComponent)({name:`ActionButton`,props:{action:{type:Object,required:!0},taskKey:{type:String,required:!0}},emits:[`click`,`dropdown-select`],setup(t,{emit:n}){let a=(0,r.computed)(()=>t.action),o=(0,r.computed)(()=>c(a.value)),s=(0,r.computed)(()=>o.value.buttonProps?.size||o.value.size||f.value.size),u=(0,r.computed)(()=>({tiny:14,small:15,medium:16,large:18})[s.value]),d=(0,r.computed)(()=>o.value.dropdown?o.value.dropdown.filter(e=>e.show===void 0?!0:l(e.show)).map(n=>{let{icon:i}=n;return{key:n.key,label:n.label,icon:i?()=>(0,r.h)(e.t,{name:i,size:14,"aria-hidden":!0}):void 0,disabled:b(a.value,t.taskKey)||x(a.value,t.taskKey)||l(n.disabled)}}):[]),p=e=>{let r=o.value.dropdown?.find(t=>t.key===e);r&&!b(a.value,t.taskKey)&&!x(a.value,t.taskKey)&&l(r.disabled)!==!0&&l(r.show)!==!1&&n(`dropdown-select`,r)},m=n=>{let{icon:c,buttonProps:l}=o.value,d=e=>{if(b(a.value,t.taskKey)||x(a.value,t.taskKey))return;n?.();let r=l?.onClick;Array.isArray(r)?r.forEach(t=>t(e)):r?.(e)},f=(0,r.h)(i.NButton,{type:o.value.type||`default`,size:s.value,...l,loading:x(a.value,t.taskKey),disabled:b(a.value,t.taskKey),onClick:d},{default:()=>o.value.label,icon:c?()=>(0,r.h)(e.t,{name:c,size:u.value,"aria-hidden":!0}):void 0});return o.value.directives&&o.value.directives.length>0?(0,r.withDirectives)(f,o.value.directives):f},h=()=>{let e=m(()=>n(`click`));return o.value.tooltip?(0,r.h)(i.NTooltip,{placement:`top`},{trigger:()=>e,default:()=>o.value.tooltip}):e},g=()=>{let e=m();return(0,r.h)(i.NDropdown,{disabled:b(a.value,t.taskKey)||x(a.value,t.taskKey),options:d.value,onSelect:p},{default:()=>e})};return()=>o.value.dropdown&&o.value.dropdown.length>0?g():h()}});return(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{class:(0,r.normalizeClass)([`c-action-bar`,{"is-compact":f.value.compact,"is-inline":f.value.inline,"is-wrap":f.value.wrap,[`is-align-${f.value.align}`]:!0,"has-only-left":_.value.length>0&&v.value.length===0&&!e.$slots.center,"has-only-right":v.value.length>0&&_.value.length===0&&!e.$slots.center}])},[_.value.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:0,class:`actions-group actions-left`,style:(0,r.normalizeStyle)({gap:`${f.value.gap}px`})},[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(_.value,(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:e.renderKey},[(0,r.createVNode)((0,r.unref)(w),{action:e.action,"task-key":e.taskKey,onClick:t=>S(e),onDropdownSelect:t=>C(t,e)},null,8,[`action`,`task-key`,`onClick`,`onDropdownSelect`]),f.value.showDivider&&t<_.value.length-1&&f.value.dividerType===`vertical`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NDivider),{key:0,vertical:``,class:`action-divider`})):(0,r.createCommentVNode)(`v-if`,!0)],64))),128))],4)):(0,r.createCommentVNode)(`v-if`,!0),e.$slots.center?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,d,[(0,r.renderSlot)(e.$slots,`center`,{},void 0,!0)])):(0,r.createCommentVNode)(`v-if`,!0),v.value.length>0?((0,r.openBlock)(),(0,r.createElementBlock)(`div`,{key:2,class:`actions-group actions-right`,style:(0,r.normalizeStyle)({gap:`${f.value.gap}px`})},[((0,r.openBlock)(!0),(0,r.createElementBlock)(r.Fragment,null,(0,r.renderList)(v.value,(e,t)=>((0,r.openBlock)(),(0,r.createElementBlock)(r.Fragment,{key:e.renderKey},[(0,r.createVNode)((0,r.unref)(w),{action:e.action,"task-key":e.taskKey,onClick:t=>S(e),onDropdownSelect:t=>C(t,e)},null,8,[`action`,`task-key`,`onClick`,`onDropdownSelect`]),f.value.showDivider&&t<v.value.length-1&&f.value.dividerType===`vertical`?((0,r.openBlock)(),(0,r.createBlock)((0,r.unref)(i.NDivider),{key:0,vertical:``,class:`action-divider`})):(0,r.createCommentVNode)(`v-if`,!0)],64))),128))],4)):(0,r.createCommentVNode)(`v-if`,!0)],2))}});var p=t.t(f,[[`__scopeId`,`data-v-48eb3073`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return p}});
@@ -1 +1 @@
1
- import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{t as n}from"./useActionTask.js";import{Fragment as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createVNode as c,defineComponent as l,h as u,normalizeClass as d,normalizeStyle as f,openBlock as p,renderList as m,renderSlot as h,unref as g,withDirectives as _}from"vue";import{NButton as v,NDivider as y,NDropdown as b,NTooltip as x}from"naive-ui";const S=`mdi:gesture-tap-button`,C={align:`left`,size:`tiny`,gap:6,wrap:!1,showDivider:!1,dividerType:`vertical`,compact:!0,inline:!0},w={add:{label:`新增`,icon:`mdi:plus`,type:`primary`},create:{label:`新增`,icon:`mdi:plus`,type:`primary`},save:{label:`保存`,icon:`mdi:content-save-outline`,type:`primary`},confirm:{label:`确认`,icon:`mdi:check`,type:`primary`},cancel:{label:`取消`,icon:`mdi:close`},close:{label:`关闭`,icon:`mdi:close`},view:{label:`查看`,icon:`mdi:eye-outline`},edit:{label:`编辑`,icon:`mdi:pencil-outline`},delete:{label:`删除`,icon:`mdi:delete-outline`,type:`error`},remove:{label:`删除`,icon:`mdi:delete-outline`,type:`error`},refresh:{label:`刷新`,icon:`mdi:refresh`},import:{label:`导入`,icon:`mdi:file-import-outline`},export:{label:`导出`,icon:`mdi:file-export-outline`},print:{label:`打印`,icon:`mdi:printer-outline`},reset:{label:`重置`,icon:`mdi:restore`},columns:{label:`列设置`,icon:`mdi:view-column-outline`},fullscreen:{label:`全屏`,icon:`mdi:fullscreen`},settings:{label:`功能配置`,icon:`mdi:tune-variant`},more:{label:`更多`,icon:`mdi:dots-horizontal`}},T=e=>{let t=e.key?w[e.key]:void 0;return{...t,...e,label:e.label||t?.label||e.key||`操作`,icon:e.icon||t?.icon||S}},E=e=>typeof e==`function`?e():g(e),D=e=>e,O={key:1,class:`actions-center`};var k=t(l({name:`C_ActionBar`,__name:`index`,props:{actions:{default:()=>[]},leftActions:{default:()=>[]},rightActions:{default:()=>[]},config:{default:()=>({})}},emits:[`action-click`,`dropdown-click`,`action-error`],setup(t,{emit:S}){let w=t,D=S,k=i(()=>({...C,...w.config})),A=i(()=>{if(w.leftActions&&w.leftActions.length>0)return w.leftActions.filter(e=>M(e));if(w.actions.length>0){let e=w.rightActions&&w.rightActions.length>0,t=w.actions.some(e=>e.group===`right`);return!e&&!t?w.actions.filter(e=>M(e)):w.actions.filter(e=>e.group!==`right`&&M(e))}return[]}),j=i(()=>w.rightActions&&w.rightActions.length>0?w.rightActions.filter(e=>M(e)):w.actions.filter(e=>e.group===`right`&&M(e))),M=e=>e.show===void 0?!0:E(e.show)??!0,N=(e,t)=>{let n=new Map;return e.map((e,r)=>{let i=JSON.stringify(e.key===void 0?[`position`,t,r]:[`key`,e.key]),a=n.get(i)??0;return n.set(i,a+1),{action:e,taskKey:i,renderKey:`${i}:${a}`}})},P=i(()=>N(A.value,`left`)),F=i(()=>N(j.value,`right`)),I=n(),L=(e,t)=>!!(E(e.disabled)||e.buttonProps?.disabled||I.isRunning(t)),R=(e,t)=>!!(E(e.loading)||e.buttonProps?.loading||e.autoLoading!==!1&&I.isRunning(t)),z=async({action:e,taskKey:t})=>{if(!(e.dropdown&&e.dropdown.length>0))try{await I.run(t,async()=>{D(`action-click`,e),await e.onClick?.()},()=>!L(e,t)&&!R(e,t))}catch(t){throw D(`action-error`,t,e),t}},B=async(e,{action:t,taskKey:n})=>{try{await I.run(n,async()=>{D(`dropdown-click`,e,t),await e.onClick?.()},()=>!L(t,n)&&!R(t,n)&&E(e.disabled)!==!0&&E(e.show)!==!1)}catch(n){throw D(`action-error`,n,t,e),n}},V=l({name:`ActionButton`,props:{action:{type:Object,required:!0},taskKey:{type:String,required:!0}},emits:[`click`,`dropdown-select`],setup(t,{emit:n}){let r=i(()=>t.action),a=i(()=>T(r.value)),o=i(()=>a.value.size||k.value.size),s=i(()=>({tiny:14,small:15,medium:16,large:18})[o.value]),c=i(()=>a.value.dropdown?a.value.dropdown.filter(e=>e.show===void 0?!0:E(e.show)).map(n=>{let{icon:i}=n;return{key:n.key,label:n.label,icon:i?()=>u(e,{name:i,size:14,"aria-hidden":!0}):void 0,disabled:L(r.value,t.taskKey)||R(r.value,t.taskKey)||E(n.disabled)}}):[]),l=e=>{let i=a.value.dropdown?.find(t=>t.key===e);i&&!L(r.value,t.taskKey)&&!R(r.value,t.taskKey)&&E(i.disabled)!==!0&&E(i.show)!==!1&&n(`dropdown-select`,i)},d=n=>{let{icon:i,buttonProps:c}=a.value,l=e=>{if(L(r.value,t.taskKey)||R(r.value,t.taskKey))return;n?.();let i=c?.onClick;Array.isArray(i)?i.forEach(t=>t(e)):i?.(e)},d=u(v,{type:a.value.type||`default`,size:o.value,...c,loading:R(r.value,t.taskKey),disabled:L(r.value,t.taskKey),onClick:l},{default:()=>a.value.label,icon:i?()=>u(e,{name:i,size:s.value,"aria-hidden":!0}):void 0});return a.value.directives&&a.value.directives.length>0?_(d,a.value.directives):d},f=()=>{let e=d(()=>n(`click`));return a.value.tooltip?u(x,{placement:`top`},{trigger:()=>e,default:()=>a.value.tooltip}):e},p=()=>{let e=d();return u(b,{disabled:L(r.value,t.taskKey)||R(r.value,t.taskKey),options:c.value,onSelect:l},{default:()=>e})};return()=>a.value.dropdown&&a.value.dropdown.length>0?p():f()}});return(e,t)=>(p(),s(`div`,{class:d([`c-action-bar`,{"is-compact":k.value.compact,"is-inline":k.value.inline,"is-wrap":k.value.wrap,[`is-align-${k.value.align}`]:!0,"has-only-left":P.value.length>0&&F.value.length===0&&!e.$slots.center,"has-only-right":F.value.length>0&&P.value.length===0&&!e.$slots.center}])},[P.value.length>0?(p(),s(`div`,{key:0,class:`actions-group actions-left`,style:f({gap:`${k.value.gap}px`})},[(p(!0),s(r,null,m(P.value,(e,t)=>(p(),s(r,{key:e.renderKey},[c(g(V),{action:e.action,"task-key":e.taskKey,onClick:t=>z(e),onDropdownSelect:t=>B(t,e)},null,8,[`action`,`task-key`,`onClick`,`onDropdownSelect`]),k.value.showDivider&&t<P.value.length-1&&k.value.dividerType===`vertical`?(p(),a(g(y),{key:0,vertical:``,class:`action-divider`})):o(`v-if`,!0)],64))),128))],4)):o(`v-if`,!0),e.$slots.center?(p(),s(`div`,O,[h(e.$slots,`center`,{},void 0,!0)])):o(`v-if`,!0),F.value.length>0?(p(),s(`div`,{key:2,class:`actions-group actions-right`,style:f({gap:`${k.value.gap}px`})},[(p(!0),s(r,null,m(F.value,(e,t)=>(p(),s(r,{key:e.renderKey},[c(g(V),{action:e.action,"task-key":e.taskKey,onClick:t=>z(e),onDropdownSelect:t=>B(t,e)},null,8,[`action`,`task-key`,`onClick`,`onDropdownSelect`]),k.value.showDivider&&t<F.value.length-1&&k.value.dividerType===`vertical`?(p(),a(g(y),{key:0,vertical:``,class:`action-divider`})):o(`v-if`,!0)],64))),128))],4)):o(`v-if`,!0)],2))}}),[[`__scopeId`,`data-v-3c85fa90`]]);export{D as a,S as i,C as n,T as o,w as r,k as t};
1
+ import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{t as n}from"./useActionTask.js";import{Fragment as r,computed as i,createBlock as a,createCommentVNode as o,createElementBlock as s,createVNode as c,defineComponent as l,h as u,normalizeClass as d,normalizeStyle as f,openBlock as p,renderList as m,renderSlot as h,unref as g,withDirectives as _}from"vue";import{NButton as v,NDivider as y,NDropdown as b,NTooltip as x}from"naive-ui";const S=`mdi:gesture-tap-button`,C={align:`left`,size:`tiny`,gap:6,wrap:!1,showDivider:!1,dividerType:`vertical`,compact:!0,inline:!0},w={add:{label:`新增`,icon:`mdi:plus`,type:`primary`},create:{label:`新增`,icon:`mdi:plus`,type:`primary`},save:{label:`保存`,icon:`mdi:content-save-outline`,type:`primary`},confirm:{label:`确认`,icon:`mdi:check`,type:`primary`},cancel:{label:`取消`,icon:`mdi:close`},close:{label:`关闭`,icon:`mdi:close`},view:{label:`查看`,icon:`mdi:eye-outline`},edit:{label:`编辑`,icon:`mdi:pencil-outline`},delete:{label:`删除`,icon:`mdi:delete-outline`,type:`error`},remove:{label:`删除`,icon:`mdi:delete-outline`,type:`error`},refresh:{label:`刷新`,icon:`mdi:refresh`},import:{label:`导入`,icon:`mdi:file-import-outline`},export:{label:`导出`,icon:`mdi:file-export-outline`},print:{label:`打印`,icon:`mdi:printer-outline`},reset:{label:`重置`,icon:`mdi:restore`},columns:{label:`列设置`,icon:`mdi:view-column-outline`},fullscreen:{label:`全屏`,icon:`mdi:fullscreen`},settings:{label:`功能配置`,icon:`mdi:tune-variant`},more:{label:`更多`,icon:`mdi:dots-horizontal`}},T=e=>{let t=e.key?w[e.key]:void 0;return{...t,...e,label:e.label||t?.label||e.key||`操作`,icon:e.icon||t?.icon||S}},E=e=>typeof e==`function`?e():g(e),D=e=>e,O={key:1,class:`actions-center`};var k=t(l({name:`C_ActionBar`,__name:`index`,props:{actions:{default:()=>[]},leftActions:{default:()=>[]},rightActions:{default:()=>[]},config:{default:()=>({})}},emits:[`action-click`,`dropdown-click`,`action-error`],setup(t,{emit:S}){let w=t,D=S,k=i(()=>({...C,...w.config,gap:w.config.gap??(w.config.compact===!1?12:C.gap)})),A=i(()=>{if(w.leftActions&&w.leftActions.length>0)return w.leftActions.filter(e=>M(e));if(w.actions.length>0){let e=w.rightActions&&w.rightActions.length>0,t=w.actions.some(e=>e.group===`right`);return!e&&!t?w.actions.filter(e=>M(e)):w.actions.filter(e=>e.group!==`right`&&M(e))}return[]}),j=i(()=>w.rightActions&&w.rightActions.length>0?w.rightActions.filter(e=>M(e)):w.actions.filter(e=>e.group===`right`&&M(e))),M=e=>e.show===void 0?!0:E(e.show)??!0,N=(e,t)=>{let n=new Map;return e.map((e,r)=>{let i=JSON.stringify(e.key===void 0?[`position`,t,r]:[`key`,e.key]),a=n.get(i)??0;return n.set(i,a+1),{action:e,taskKey:i,renderKey:`${i}:${a}`}})},P=i(()=>N(A.value,`left`)),F=i(()=>N(j.value,`right`)),I=n(),L=(e,t)=>!!(E(e.disabled)||e.buttonProps?.disabled||I.isRunning(t)),R=(e,t)=>!!(E(e.loading)||e.buttonProps?.loading||e.autoLoading!==!1&&I.isRunning(t)),z=async({action:e,taskKey:t})=>{if(!(e.dropdown&&e.dropdown.length>0))try{await I.run(t,async()=>{D(`action-click`,e),await e.onClick?.()},()=>!L(e,t)&&!R(e,t))}catch(t){throw D(`action-error`,t,e),t}},B=async(e,{action:t,taskKey:n})=>{try{await I.run(n,async()=>{D(`dropdown-click`,e,t),await e.onClick?.()},()=>!L(t,n)&&!R(t,n)&&E(e.disabled)!==!0&&E(e.show)!==!1)}catch(n){throw D(`action-error`,n,t,e),n}},V=l({name:`ActionButton`,props:{action:{type:Object,required:!0},taskKey:{type:String,required:!0}},emits:[`click`,`dropdown-select`],setup(t,{emit:n}){let r=i(()=>t.action),a=i(()=>T(r.value)),o=i(()=>a.value.buttonProps?.size||a.value.size||k.value.size),s=i(()=>({tiny:14,small:15,medium:16,large:18})[o.value]),c=i(()=>a.value.dropdown?a.value.dropdown.filter(e=>e.show===void 0?!0:E(e.show)).map(n=>{let{icon:i}=n;return{key:n.key,label:n.label,icon:i?()=>u(e,{name:i,size:14,"aria-hidden":!0}):void 0,disabled:L(r.value,t.taskKey)||R(r.value,t.taskKey)||E(n.disabled)}}):[]),l=e=>{let i=a.value.dropdown?.find(t=>t.key===e);i&&!L(r.value,t.taskKey)&&!R(r.value,t.taskKey)&&E(i.disabled)!==!0&&E(i.show)!==!1&&n(`dropdown-select`,i)},d=n=>{let{icon:i,buttonProps:c}=a.value,l=e=>{if(L(r.value,t.taskKey)||R(r.value,t.taskKey))return;n?.();let i=c?.onClick;Array.isArray(i)?i.forEach(t=>t(e)):i?.(e)},d=u(v,{type:a.value.type||`default`,size:o.value,...c,loading:R(r.value,t.taskKey),disabled:L(r.value,t.taskKey),onClick:l},{default:()=>a.value.label,icon:i?()=>u(e,{name:i,size:s.value,"aria-hidden":!0}):void 0});return a.value.directives&&a.value.directives.length>0?_(d,a.value.directives):d},f=()=>{let e=d(()=>n(`click`));return a.value.tooltip?u(x,{placement:`top`},{trigger:()=>e,default:()=>a.value.tooltip}):e},p=()=>{let e=d();return u(b,{disabled:L(r.value,t.taskKey)||R(r.value,t.taskKey),options:c.value,onSelect:l},{default:()=>e})};return()=>a.value.dropdown&&a.value.dropdown.length>0?p():f()}});return(e,t)=>(p(),s(`div`,{class:d([`c-action-bar`,{"is-compact":k.value.compact,"is-inline":k.value.inline,"is-wrap":k.value.wrap,[`is-align-${k.value.align}`]:!0,"has-only-left":P.value.length>0&&F.value.length===0&&!e.$slots.center,"has-only-right":F.value.length>0&&P.value.length===0&&!e.$slots.center}])},[P.value.length>0?(p(),s(`div`,{key:0,class:`actions-group actions-left`,style:f({gap:`${k.value.gap}px`})},[(p(!0),s(r,null,m(P.value,(e,t)=>(p(),s(r,{key:e.renderKey},[c(g(V),{action:e.action,"task-key":e.taskKey,onClick:t=>z(e),onDropdownSelect:t=>B(t,e)},null,8,[`action`,`task-key`,`onClick`,`onDropdownSelect`]),k.value.showDivider&&t<P.value.length-1&&k.value.dividerType===`vertical`?(p(),a(g(y),{key:0,vertical:``,class:`action-divider`})):o(`v-if`,!0)],64))),128))],4)):o(`v-if`,!0),e.$slots.center?(p(),s(`div`,O,[h(e.$slots,`center`,{},void 0,!0)])):o(`v-if`,!0),F.value.length>0?(p(),s(`div`,{key:2,class:`actions-group actions-right`,style:f({gap:`${k.value.gap}px`})},[(p(!0),s(r,null,m(F.value,(e,t)=>(p(),s(r,{key:e.renderKey},[c(g(V),{action:e.action,"task-key":e.taskKey,onClick:t=>z(e),onDropdownSelect:t=>B(t,e)},null,8,[`action`,`task-key`,`onClick`,`onDropdownSelect`]),k.value.showDivider&&t<F.value.length-1&&k.value.dividerType===`vertical`?(p(),a(g(y),{key:0,vertical:``,class:`action-divider`})):o(`v-if`,!0)],64))),128))],4)):o(`v-if`,!0)],2))}}),[[`__scopeId`,`data-v-48eb3073`]]);export{D as a,S as i,C as n,T as o,w as r,k as t};