@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.
- package/CHANGELOG.md +39 -0
- package/README.md +12 -9
- package/README_EN.md +12 -9
- package/dist/C_ActionBar.css +56 -48
- package/dist/C_ActionBar2.cjs +1 -1
- package/dist/C_ActionBar2.js +1 -1
- package/dist/C_AntV2.cjs +1 -1
- package/dist/C_AntV2.js +3 -3
- package/dist/C_Barcode.css +6 -6
- package/dist/C_Barcode2.cjs +1 -1
- package/dist/C_Barcode2.js +1 -1
- package/dist/C_Chat.css +269 -185
- package/dist/C_Chat2.cjs +1 -1
- package/dist/C_Chat2.js +1 -1
- package/dist/C_Code.css +26 -26
- package/dist/C_Code2.cjs +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_FilePreview.css +96 -57
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_Form.base.css +295 -277
- package/dist/C_Form.css +295 -277
- package/dist/C_Form.d.cts +2 -1
- package/dist/C_Form.d.ts +2 -1
- package/dist/C_FormModal.css +10 -10
- package/dist/C_FormModal2.cjs +1 -1
- package/dist/C_FormModal2.js +1 -1
- package/dist/C_FormSearch.css +67 -68
- package/dist/C_FormSearch.d.cts +2 -1
- package/dist/C_FormSearch.d.ts +2 -1
- package/dist/C_FormSearch2.cjs +1 -1
- package/dist/C_FormSearch2.js +1 -1
- package/dist/C_FullCalendar2.cjs +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_GlobalSearch.css +140 -118
- package/dist/C_GlobalSearch2.cjs +1 -1
- package/dist/C_GlobalSearch2.js +1 -1
- package/dist/C_ImageCropper.css +12 -10
- package/dist/C_ImageCropper2.cjs +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_Login.css +79 -79
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Map.css +10 -10
- package/dist/C_Map2.cjs +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_OrgChart.css +28 -4
- package/dist/C_OrgChart2.cjs +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_QRCode2.cjs +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_Signature.css +15 -15
- package/dist/C_Signature2.cjs +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_SplitPane.cjs +1 -1
- package/dist/C_SplitPane.css +251 -109
- package/dist/C_SplitPane.js +1 -1
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Table.base.css +491 -563
- package/dist/C_Table.cjs +1 -1
- package/dist/C_Table.css +491 -563
- package/dist/C_Table.d.cts +3 -2
- package/dist/C_Table.d.ts +4 -2
- package/dist/C_Table.js +1 -1
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_Transfer.css +93 -84
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.css +72 -125
- package/dist/C_Tree.d.cts +3 -2
- package/dist/C_Tree.d.ts +15 -2
- package/dist/C_Tree2.cjs +1 -1
- package/dist/C_Tree2.js +1 -1
- package/dist/C_Upload.css +5 -5
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer2.cjs +4 -3
- package/dist/C_VideoPlayer2.js +4 -3
- package/dist/C_VtableGantt.css +29 -28
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_WaterFall.css +29 -29
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/Card.cjs +1 -1
- package/dist/Card.js +1 -1
- package/dist/Custom.cjs +1 -1
- package/dist/Custom.js +1 -1
- package/dist/Dynamic.cjs +1 -1
- package/dist/Dynamic.js +1 -1
- package/dist/Steps.cjs +1 -1
- package/dist/Steps.js +1 -1
- package/dist/Tabs.cjs +1 -1
- package/dist/Tabs.js +1 -1
- package/dist/constants.d.cts +2 -2
- package/dist/constants.d.ts +2 -2
- package/dist/constants2.d.cts +2 -2
- package/dist/constants2.d.ts +2 -2
- package/dist/constants3.d.cts +2 -2
- package/dist/constants3.d.ts +2 -2
- package/dist/constants4.d.cts +4 -4
- package/dist/constants4.d.ts +4 -4
- package/dist/constants5.d.cts +3 -7
- package/dist/constants5.d.ts +3 -7
- package/dist/data.d.cts +10 -10
- package/dist/data.d.ts +10 -10
- package/dist/density.cjs +1 -0
- package/dist/density.d.cts +15 -0
- package/dist/density.d.ts +15 -0
- package/dist/density.js +1 -0
- package/dist/helpers.cjs +1 -1
- package/dist/helpers.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +5 -3
- package/dist/index.js +1 -1
- package/dist/index.vue.d.cts +5 -5
- package/dist/index.vue.d.ts +5 -5
- package/dist/index10.vue.d.cts +5 -5
- package/dist/index10.vue.d.ts +3 -3
- package/dist/index11.vue.d.cts +3 -3
- package/dist/index11.vue.d.ts +5 -5
- package/dist/index12.vue.d.cts +5 -5
- package/dist/index13.vue.d.ts +5 -5
- package/dist/index14.vue.d.cts +5 -5
- package/dist/index14.vue.d.ts +9 -9
- package/dist/index15.vue.d.cts +9 -9
- package/dist/index15.vue.d.ts +3 -3
- package/dist/index16.vue.d.cts +3 -3
- package/dist/index17.vue.d.ts +1 -1
- package/dist/index18.vue.d.cts +1 -1
- package/dist/index18.vue.d.ts +7 -7
- package/dist/index19.vue.d.cts +7 -7
- package/dist/index19.vue.d.ts +5 -5
- package/dist/index2.vue.d.cts +2 -2
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.cts +6 -2
- package/dist/index20.vue.d.ts +6 -2
- package/dist/index21.vue.d.cts +2 -2
- package/dist/index21.vue.d.ts +2 -2
- package/dist/index22.vue.d.cts +2 -2
- package/dist/index22.vue.d.ts +2 -2
- package/dist/index23.vue.d.cts +2 -2
- package/dist/index23.vue.d.ts +2 -2
- package/dist/index25.vue.d.cts +5 -5
- package/dist/index25.vue.d.ts +5 -5
- package/dist/index27.vue.d.cts +2 -2
- package/dist/index27.vue.d.ts +2 -2
- package/dist/index28.vue.d.cts +7 -3
- package/dist/index28.vue.d.ts +7 -3
- package/dist/index3.vue.d.cts +3 -3
- package/dist/index3.vue.d.ts +3 -3
- package/dist/index4.vue.d.cts +5 -5
- package/dist/index5.vue.d.ts +2 -2
- package/dist/index6.vue.d.cts +2 -2
- package/dist/index6.vue.d.ts +7 -4
- package/dist/index7.vue.d.cts +7 -4
- package/dist/index7.vue.d.ts +2 -2
- package/dist/index8.vue.d.cts +2 -2
- package/dist/index8.vue.d.ts +4 -6
- package/dist/index9.vue.d.cts +4 -6
- package/dist/index9.vue.d.ts +5 -5
- package/dist/mapUtils.d.cts +4 -4
- package/dist/mapUtils.d.ts +4 -4
- package/dist/presets.d.cts +4 -1
- package/dist/presets.d.ts +4 -1
- package/dist/style.css +1763 -1566
- package/dist/useCalendarEvents.d.cts +10 -9
- package/dist/useCalendarEvents.d.ts +10 -9
- package/dist/useCollapsePanel.d.cts +3 -3
- package/dist/useCollapsePanel.d.ts +3 -3
- package/dist/useCropperCore.d.cts +9 -9
- package/dist/useCropperCore.d.ts +9 -9
- package/dist/useDraggableLayout.d.cts +15 -13
- package/dist/useDraggableLayout.d.ts +15 -13
- package/dist/useDynamicFormState.d.cts +5 -2
- package/dist/useDynamicFormState.d.ts +5 -2
- package/dist/useEdgeInteraction.d.cts +3 -3
- package/dist/useEdgeInteraction.d.ts +3 -3
- package/dist/useFullscreen.d.cts +4 -0
- package/dist/useFullscreen.d.ts +4 -0
- package/dist/useGlobalSearch.d.cts +9 -4
- package/dist/useGlobalSearch.d.ts +9 -4
- package/dist/useInfiniteScroll.d.cts +4 -1
- package/dist/useInfiniteScroll.d.ts +4 -1
- package/dist/useQRCode.d.cts +3 -3
- package/dist/useQRCode.d.ts +3 -3
- package/dist/useSearchState.d.cts +8 -6
- package/dist/useSearchState.d.ts +8 -6
- package/dist/useSignatureHistory.d.cts +7 -7
- package/dist/useSignatureHistory.d.ts +7 -7
- package/dist/useSplitResize.d.cts +50 -61
- package/dist/useSplitResize.d.ts +50 -61
- package/dist/useTableQuery.cjs +3 -3
- package/dist/useTableQuery.d.cts +237 -13
- package/dist/useTableQuery.d.ts +237 -13
- package/dist/useTableQuery.js +3 -3
- package/dist/useTimeSelection.d.cts +2 -2
- package/dist/useTimeSelection.d.ts +2 -2
- package/dist/useWorkflowValidation.d.cts +3 -3
- package/dist/useWorkflowValidation.d.ts +3 -3
- package/dist/verification.d.cts +5 -5
- package/dist/verification.d.ts +5 -5
- package/docs/component-review-20261019.md +55 -0
- package/docs/guides/form-density.en.md +42 -0
- package/docs/guides/form-density.md +59 -0
- package/docs/guides/runtime-performance.md +38 -0
- package/docs/guides/split-pane.en.md +103 -0
- package/docs/guides/split-pane.md +126 -0
- package/docs/guides/table-density.md +87 -0
- package/docs/guides/transfer.md +11 -0
- package/docs/guides/tree.md +157 -0
- package/docs/guides/usage.en.md +2 -0
- package/docs/guides/usage.md +2 -0
- package/docs/runtime-review-20261019.md +41 -0
- package/docs/wl-ui-produce-coverage.md +62 -0
- package/package.json +4 -2
- package/dist/useTreeOperations.d.cts +0 -185
- 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)
|
|
166
|
-
| [组件目录](./docs/components.md)
|
|
167
|
-
| [使用指南](./docs/guides/usage.md)
|
|
168
|
-
| [
|
|
169
|
-
| [
|
|
170
|
-
| [
|
|
171
|
-
| [
|
|
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
|
|
164
|
-
|
|
|
165
|
-
| [Architecture and isolation](./docs/architecture.en.md)
|
|
166
|
-
| [Component catalog](./docs/components.en.md)
|
|
167
|
-
| [Usage guide](./docs/guides/usage.en.md)
|
|
168
|
-
| [
|
|
169
|
-
| [
|
|
170
|
-
| [
|
|
171
|
-
| [
|
|
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
|
|
package/dist/C_ActionBar.css
CHANGED
|
@@ -67,8 +67,9 @@
|
|
|
67
67
|
|
|
68
68
|
/* 通用操作按钮组件样式 */
|
|
69
69
|
/* ================= 主容器 ================= */
|
|
70
|
-
.c-action-bar[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
137
|
+
.actions-group.actions-left[data-v-48eb3073] {
|
|
131
138
|
justify-content: flex-start;
|
|
132
139
|
}
|
|
133
|
-
.actions-group.actions-right[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
168
|
+
.actions-group[data-v-48eb3073] .n-button .n-icon {
|
|
161
169
|
transition: transform 0.3s ease;
|
|
162
170
|
}
|
|
163
|
-
.actions-group[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
186
|
+
.actions-group[data-v-48eb3073] .n-button.n-button--loading {
|
|
179
187
|
pointer-events: none;
|
|
180
188
|
}
|
|
181
|
-
.actions-group[data-v-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
222
|
+
.action-divider[data-v-48eb3073]:hover {
|
|
215
223
|
opacity: 0.6;
|
|
216
224
|
}
|
|
217
225
|
|
|
218
226
|
/* ================= 下拉菜单优化 ================= */
|
|
219
|
-
[data-v-
|
|
227
|
+
[data-v-48eb3073] .n-dropdown-option {
|
|
220
228
|
transition: all 0.2s ease;
|
|
221
229
|
}
|
|
222
|
-
[data-v-
|
|
230
|
+
[data-v-48eb3073] .n-dropdown-option:hover {
|
|
223
231
|
transform: translateX(4px);
|
|
224
232
|
}
|
|
225
|
-
[data-v-
|
|
233
|
+
[data-v-48eb3073] .n-dropdown-option .n-icon {
|
|
226
234
|
transition: transform 0.2s ease;
|
|
227
235
|
}
|
|
228
|
-
[data-v-
|
|
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-
|
|
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-
|
|
245
|
-
animation: button-loading-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
273
|
+
html.dark .action-divider[data-v-48eb3073] {
|
|
266
274
|
opacity: 0.15;
|
|
267
275
|
}
|
|
268
|
-
html.dark .action-divider[data-v-
|
|
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-
|
|
274
|
-
.px[data-v-
|
|
281
|
+
.inline[data-v-48eb3073]{display:inline;}
|
|
282
|
+
.px[data-v-48eb3073]{padding-left:1rem;padding-right:1rem;}
|
package/dist/C_ActionBar2.cjs
CHANGED
|
@@ -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-
|
|
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}});
|
package/dist/C_ActionBar2.js
CHANGED
|
@@ -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-
|
|
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};
|