@robot-admin/naive-ui-components 0.13.2 → 0.13.6
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 +27 -0
- package/README.md +25 -5
- package/README_EN.md +17 -5
- package/dist/C_ActionBar.css +75 -63
- package/dist/C_ActionBar2.cjs +1 -1
- package/dist/C_ActionBar2.js +1 -1
- package/dist/C_AntV.css +249 -79
- package/dist/C_AntV2.cjs +3 -3
- package/dist/C_AntV2.js +2 -2
- package/dist/C_AudioPlayer.css +88 -76
- package/dist/C_AudioPlayer2.cjs +1 -1
- package/dist/C_AudioPlayer2.js +1 -1
- package/dist/C_AvatarGroup.css +32 -28
- package/dist/C_AvatarGroup2.cjs +1 -1
- package/dist/C_AvatarGroup2.js +1 -1
- package/dist/C_Breadcrumb.css +35 -17
- package/dist/C_Breadcrumb2.cjs +1 -1
- package/dist/C_Breadcrumb2.js +1 -1
- package/dist/C_Captcha.css +66 -53
- package/dist/C_Captcha2.cjs +1 -1
- package/dist/C_Captcha2.js +1 -1
- package/dist/C_Cascade.css +6 -2
- package/dist/C_Cascade2.cjs +1 -1
- package/dist/C_Cascade2.js +1 -1
- package/dist/C_Chat.css +40 -33
- package/dist/C_City.css +37 -32
- package/dist/C_City2.cjs +1 -1
- package/dist/C_City2.js +1 -1
- package/dist/C_Code.css +53 -40
- package/dist/C_Code2.cjs +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_CollapsePanel.css +68 -55
- package/dist/C_CollapsePanel2.cjs +1 -1
- package/dist/C_CollapsePanel2.js +1 -1
- package/dist/C_ContextMenu.css +68 -26
- package/dist/C_ContextMenu2.cjs +1 -1
- package/dist/C_ContextMenu2.js +1 -1
- package/dist/C_Cron.css +95 -68
- package/dist/C_Cron2.cjs +1 -1
- package/dist/C_Cron2.js +1 -1
- package/dist/C_Date.css +8 -1
- package/dist/C_Date2.cjs +1 -1
- package/dist/C_Date2.js +1 -1
- package/dist/C_Draggable.css +60 -51
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_Editor.css +23 -15
- package/dist/C_Editor2.cjs +1 -1
- package/dist/C_Editor2.js +1 -1
- package/dist/C_FilePreview.css +200 -90
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_Form.base.css +284 -224
- package/dist/C_Form.css +307 -239
- package/dist/C_Form2.cjs +1 -1
- package/dist/C_Form2.js +1 -1
- package/dist/C_FormModal.css +18 -8
- package/dist/C_FormModal2.cjs +1 -1
- package/dist/C_FormModal2.js +1 -1
- package/dist/C_FormSearch.css +58 -45
- package/dist/C_FormSearch2.cjs +1 -1
- package/dist/C_FormSearch2.js +1 -1
- package/dist/C_FormulaEditor.css +62 -37
- package/dist/C_FormulaEditor2.cjs +1 -1
- package/dist/C_FormulaEditor2.js +1 -1
- package/dist/C_FullCalendar.css +16 -3
- package/dist/C_FullCalendar2.cjs +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_GlobalSearch.css +121 -112
- package/dist/C_GlobalSearch2.cjs +1 -1
- package/dist/C_GlobalSearch2.js +1 -1
- package/dist/C_Guide.css +30 -18
- package/dist/C_Guide2.cjs +1 -1
- package/dist/C_Guide2.js +1 -1
- package/dist/C_Icon.css +24 -17
- package/dist/C_Icon2.cjs +1 -1
- package/dist/C_Icon2.js +1 -1
- package/dist/C_ImageCropper.css +39 -22
- package/dist/C_ImageCropper2.cjs +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_Language.css +30 -17
- package/dist/C_Language2.cjs +1 -1
- package/dist/C_Language2.js +1 -1
- package/dist/C_Loading.cjs +1 -0
- package/dist/C_Loading.css +119 -0
- package/dist/C_Loading.d.cts +2 -0
- package/dist/C_Loading.d.ts +2 -0
- package/dist/C_Loading.js +1 -0
- package/dist/C_Loading2.cjs +1 -0
- package/dist/C_Loading2.js +1 -0
- package/dist/C_Login.css +162 -137
- package/dist/C_Login.d.cts +1 -1
- package/dist/C_Login.d.ts +1 -1
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Map.css +25 -4
- package/dist/C_Map2.cjs +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_Markdown.css +47 -42
- package/dist/C_Markdown.d.cts +1 -1
- package/dist/C_Markdown.d.ts +1 -1
- package/dist/C_Markdown2.cjs +1 -1
- package/dist/C_Markdown2.js +1 -1
- package/dist/C_Menu.css +7 -1
- package/dist/C_Menu.d.ts +1 -1
- package/dist/C_Menu2.cjs +1 -1
- package/dist/C_Menu2.js +1 -1
- package/dist/C_NotificationCenter.css +134 -90
- package/dist/C_NotificationCenter2.cjs +1 -1
- package/dist/C_NotificationCenter2.js +1 -1
- package/dist/C_OrgChart.css +10 -0
- package/dist/C_OrgChart.d.cts +1 -1
- package/dist/C_OrgChart.d.ts +1 -1
- package/dist/C_OrgChart2.cjs +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_Progress.d.cts +1 -1
- package/dist/C_Progress.d.ts +1 -1
- package/dist/C_QRCode.css +12 -8
- package/dist/C_QRCode2.cjs +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_Signature.css +18 -14
- package/dist/C_Signature2.cjs +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_Skeleton.css +5 -0
- package/dist/C_Skeleton.d.cts +1 -1
- package/dist/C_Skeleton.d.ts +1 -1
- package/dist/C_Skeleton2.cjs +1 -1
- package/dist/C_Skeleton2.js +1 -1
- package/dist/C_SplitPane.css +61 -39
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Steps.css +42 -38
- package/dist/C_Steps.d.cts +1 -1
- package/dist/C_Steps.d.ts +1 -1
- package/dist/C_Steps2.cjs +1 -1
- package/dist/C_Steps2.js +1 -1
- package/dist/C_Table.base.css +585 -352
- package/dist/C_Table.cjs +1 -1
- package/dist/C_Table.css +608 -367
- package/dist/C_Table.d.ts +2 -2
- package/dist/C_Table.js +1 -1
- package/dist/C_TagsView.css +93 -55
- package/dist/C_TagsView.d.cts +1 -1
- package/dist/C_TagsView.d.ts +1 -1
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_Theme.css +24 -17
- package/dist/C_Theme.d.cts +1 -1
- package/dist/C_Theme.d.ts +1 -1
- package/dist/C_Timeline.css +47 -36
- package/dist/C_Timeline.d.cts +1 -1
- package/dist/C_Timeline.d.ts +1 -1
- package/dist/C_Transfer.css +86 -67
- package/dist/C_Transfer.d.cts +1 -1
- package/dist/C_Transfer.d.ts +1 -1
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.css +48 -33
- package/dist/C_Tree2.cjs +1 -1
- package/dist/C_Tree2.js +1 -1
- package/dist/C_Upload.css +104 -51
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer.css +140 -69
- package/dist/C_VideoPlayer2.cjs +1 -1
- package/dist/C_VideoPlayer2.js +1 -1
- package/dist/C_VtableGantt.css +42 -19
- package/dist/C_VtableGantt.d.cts +1 -1
- package/dist/C_VtableGantt.d.ts +1 -1
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_WaterFall.css +32 -16
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow.css +332 -221
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/config.cjs +1 -1
- package/dist/config.js +1 -1
- package/dist/constants.d.cts +4 -4
- package/dist/constants.d.ts +4 -4
- package/dist/constants2.d.cts +4 -4
- package/dist/constants2.d.ts +4 -4
- package/dist/constants3.d.cts +3 -3
- package/dist/constants3.d.ts +3 -3
- package/dist/constants4.d.cts +6 -6
- package/dist/constants4.d.ts +6 -6
- package/dist/constants5.d.cts +2 -2
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.cts +8 -8
- package/dist/data.d.ts +8 -8
- package/dist/data2.cjs +1 -1
- package/dist/data2.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +28 -27
- package/dist/index.d.ts +28 -27
- package/dist/index.js +1 -1
- package/dist/index.vue.d.cts +1 -1
- package/dist/index.vue.d.ts +1 -1
- 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 +2 -2
- package/dist/index12.vue.d.cts +2 -2
- package/dist/index13.vue.d.ts +1 -1
- package/dist/index14.vue.d.cts +1 -1
- package/dist/index14.vue.d.ts +11 -9
- package/dist/index15.vue.d.cts +11 -9
- package/dist/index15.vue.d.ts +3 -3
- package/dist/index16.vue.d.cts +3 -3
- package/dist/index16.vue.d.ts +13 -129
- package/dist/index17.vue.d.cts +13 -129
- package/dist/index17.vue.d.ts +129 -76
- package/dist/index18.vue.d.cts +129 -76
- package/dist/index18.vue.d.ts +75 -71
- package/dist/index19.vue.d.cts +75 -93
- package/dist/index19.vue.d.ts +68 -90
- package/dist/index2.vue.d.cts +2 -2
- package/dist/index2.vue.d.ts +2 -2
- package/dist/index20.vue.d.cts +87 -40
- package/dist/index20.vue.d.ts +87 -40
- package/dist/index21.vue.d.cts +40 -89
- package/dist/index21.vue.d.ts +40 -89
- package/dist/index22.vue.d.cts +95 -37
- package/dist/index22.vue.d.ts +95 -37
- package/dist/index23.vue.d.cts +34 -8
- package/dist/index23.vue.d.ts +34 -8
- package/dist/index24.vue.d.cts +12 -654
- package/dist/index24.vue.d.ts +12 -654
- package/dist/index25.vue.d.cts +650 -85
- package/dist/index25.vue.d.ts +650 -85
- package/dist/index26.vue.d.cts +85 -100
- package/dist/index26.vue.d.ts +85 -100
- package/dist/index27.vue.d.cts +92 -61
- package/dist/index27.vue.d.ts +92 -61
- package/dist/index28.vue.d.cts +80 -0
- package/dist/index28.vue.d.ts +80 -0
- package/dist/index3.vue.d.cts +5 -5
- package/dist/index3.vue.d.ts +5 -5
- package/dist/index5.vue.d.ts +2 -2
- package/dist/index6.vue.d.cts +2 -2
- package/dist/index6.vue.d.ts +1 -1
- package/dist/index7.vue.d.cts +1 -1
- package/dist/index7.vue.d.ts +2 -2
- package/dist/index8.vue.d.cts +2 -2
- package/dist/index8.vue.d.ts +3 -3
- package/dist/index9.vue.d.cts +3 -3
- package/dist/index9.vue.d.ts +5 -5
- package/dist/mapUtils.d.cts +2 -2
- package/dist/mapUtils.d.ts +2 -2
- package/dist/presets.d.cts +1 -1
- package/dist/presets.d.ts +1 -1
- package/dist/resolver.cjs +1 -1
- package/dist/resolver.d.cts +1 -1
- package/dist/resolver.d.ts +1 -1
- package/dist/resolver.js +1 -1
- package/dist/style.css +3205 -1982
- package/dist/useCollapsePanel.d.cts +2 -2
- package/dist/useCollapsePanel.d.ts +2 -2
- package/dist/useCropperCore.d.cts +8 -8
- package/dist/useCropperCore.d.ts +8 -8
- package/dist/useDraggableLayout.d.cts +5 -5
- package/dist/useDraggableLayout.d.ts +5 -5
- package/dist/useDynamicFormState.d.cts +2 -2
- package/dist/useDynamicFormState.d.ts +2 -2
- package/dist/useEdgeInteraction.d.cts +1 -1
- package/dist/useEdgeInteraction.d.ts +1 -1
- package/dist/useFullscreen.d.cts +2 -2
- package/dist/useFullscreen.d.ts +2 -2
- package/dist/useInfiniteScroll.d.cts +3 -3
- package/dist/useInfiniteScroll.d.ts +3 -3
- package/dist/useQRCode.d.cts +2 -2
- package/dist/useQRCode.d.ts +2 -2
- package/dist/useSearchState.d.cts +6 -6
- package/dist/useSearchState.d.ts +6 -6
- package/dist/useSignatureHistory.d.cts +6 -6
- package/dist/useSignatureHistory.d.ts +6 -6
- package/dist/useSplitResize.d.cts +4 -4
- package/dist/useSplitResize.d.ts +4 -4
- package/dist/useTableQuery.cjs +3 -3
- package/dist/useTableQuery.d.cts +3 -1
- package/dist/useTableQuery.d.ts +3 -1
- package/dist/useTableQuery.js +3 -3
- package/dist/useTimeSelection.d.cts +4 -4
- package/dist/useTimeSelection.d.ts +4 -4
- package/dist/useTreeOperations.d.cts +6 -6
- package/dist/useTreeOperations.d.ts +6 -6
- package/dist/useWorkflowValidation.d.cts +6 -6
- package/dist/useWorkflowValidation.d.ts +6 -6
- package/dist/verification.d.cts +2 -2
- package/dist/verification.d.ts +2 -2
- package/package.json +10 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# @robot-admin/naive-ui-components
|
|
2
2
|
|
|
3
|
+
## 0.13.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 新增 `C_Loading`:内置机器人数据扫描 SVG,随 Naive UI 主色变化,支持尺寸、文案和颜色配置,无在线图标、定时器或新增依赖。动画尊重系统减少动态效果设置,提供读屏状态说明。
|
|
8
|
+
- `C_Table` 默认使用新的加载态,并开放 `loading` 插槽;全量、按需及 base 样式入口均包含加载组件样式。加载过程继续保留已有表格内容,不改变请求或交互锁定逻辑。
|
|
9
|
+
|
|
10
|
+
## 0.13.5
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- 发布构建同时校验第三方 CSS:将 Markdown 的通用动画类与关键帧、富文本编辑器的 no-scroll、地图的旧 VML 类限定在所属组件命名空间。兼容挂载在 body 的编辑器弹层;全量和按需样式共用同一隔离流程,宿主无需新增覆盖规则。供应商升级引入裸全局选择器时阻止发布。
|
|
15
|
+
|
|
16
|
+
## 0.13.4
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- 移除 C_GlobalSearch 常驻导航按钮的背景模糊,保留渐变、边框和交互状态,修复 Chrome 高分屏窗口放大后正文区域被错误裁切的合成异常;搜索弹层仍保留独立的模糊效果,宿主无需添加样式覆盖或业务配置。
|
|
21
|
+
|
|
22
|
+
## 0.13.3
|
|
23
|
+
|
|
24
|
+
### Patch Changes
|
|
25
|
+
|
|
26
|
+
- 发布阶段生成组件自有的 scoped 工具类与图标样式,日期等组件不再依赖宿主 UnoCSS 扫描或额外 safelist;新增组件样式边界发布检查。隔离表格编辑标记、拖拽状态及引导触发器样式,聊天、时间线、穿梭框、菜单和音频组件使用通用主题变量及稳定的默认值。
|
|
27
|
+
- 修复 C_Icon 的真实加载与错误回退:处理不存在的图标、API 超时、来源切换竞态、UnoCSS 样式缺失及数字字符串尺寸,回退失败时始终保留内置离线 SVG;取消失效回调与定时器。C_AudioPlayer 在 KeepAlive 离开时暂停播放并取消待完成的播放状态更新。
|
|
28
|
+
- C_ContextMenu 获得、移动和恢复焦点时保留背景位置;区分打开前已完成的滚动通知、无关区域滚动和调用目标真正移动,避免菜单刚打开就消失。
|
|
29
|
+
|
|
3
30
|
## 0.13.2
|
|
4
31
|
|
|
5
32
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**基于 Naive UI 的 Vue 3 企业级组件库**
|
|
6
6
|
|
|
7
|
-
从 Robot Admin 中提炼的
|
|
7
|
+
从 Robot Admin 中提炼的 54 个高质量业务组件,支持全量注册、按需导入(Tree-Shaking)和子路径独立导入。
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/@robot-admin/naive-ui-components)
|
|
10
10
|
[](./LICENSE)
|
|
@@ -433,7 +433,18 @@ const config = defineTableConfig({
|
|
|
433
433
|
|
|
434
434
|
`C_Login` 的“记住我”只保存用户名,不保存密码。短信验证码仅对格式正确的手机号触发事件;组件会立即开始本地倒计时,发送结果和服务端限流仍由宿主处理。`C_City` 在首次打开时才加载城市索引,字母跳转只作用于当前实例;默认触发器、字母和城市项均可用键盘操作。
|
|
435
435
|
|
|
436
|
-
###
|
|
436
|
+
### 表格加载态
|
|
437
|
+
|
|
438
|
+
`C_Table` 默认显示跟随主题主色的机器人 SVG 加载动画,保留已有数据,并遵循系统减少动态效果设置,无需页面配置。可通过 `loading` 插槽替换默认内容。独立的 `C_Loading` 支持 `size`(16–120,默认 48)、`label`(可选说明)和 `color`(可选颜色);原生 `NSpin` 使用时请关闭旋转,避免 SVG 整体转动:
|
|
439
|
+
|
|
440
|
+
```vue
|
|
441
|
+
<NSpin :show="loading" :size="48" :rotate="false">
|
|
442
|
+
<template #icon><C_Loading /></template>
|
|
443
|
+
<section>页面内容</section>
|
|
444
|
+
</NSpin>
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
### 📋 组件清单(54 个)
|
|
437
448
|
|
|
438
449
|
> 💡 所有组件均提供 **在线交互演示**,访问 [组件文档](https://www.tzagileteam.com/robot/components/preface) 可直接在页面中体验真实效果(通过 iframe 嵌入 Robot Admin 生产环境)。
|
|
439
450
|
|
|
@@ -442,6 +453,7 @@ const config = defineTableConfig({
|
|
|
442
453
|
| 组件 | 说明 | 外部依赖 |
|
|
443
454
|
| ---------------- | ----------------------- | ----------------------------- |
|
|
444
455
|
| `C_Icon` | Iconify 图标封装 | `@iconify/vue` |
|
|
456
|
+
| `C_Loading` | 主题化 SVG 加载态 | - |
|
|
445
457
|
| `C_Code` | 代码高亮显示 | `highlight.js` |
|
|
446
458
|
| `C_Barcode` | 条形码生成器 | `@chenfengyuan/vue-barcode` |
|
|
447
459
|
| `C_Captcha` | 拼图/ALTCHA 人机验证 | `vue3-puzzle-vcode`、`altcha` |
|
|
@@ -554,7 +566,7 @@ bun add vue naive-ui
|
|
|
554
566
|
|
|
555
567
|
```
|
|
556
568
|
bun run build
|
|
557
|
-
├── 1. tsdown → 多入口打包(
|
|
569
|
+
├── 1. tsdown → 多入口打包(54 组件 ESM/CJS/DTS)
|
|
558
570
|
├── 2. sass CLI → 编译共享变量入口 → global-scss.css
|
|
559
571
|
├── 3. merge-css.js → 合并 Vue 编译后的 SFC CSS + 全局变量 → style.css
|
|
560
572
|
├── 4. gen-exports.js → 自动生成 package.json exports 映射
|
|
@@ -564,7 +576,7 @@ bun run build
|
|
|
564
576
|
|
|
565
577
|
#### 技术要点
|
|
566
578
|
|
|
567
|
-
- **构建引擎**:[tsdown](https://github.com/rolldown/tsdown)(基于 Rolldown),
|
|
579
|
+
- **构建引擎**:[tsdown](https://github.com/rolldown/tsdown)(基于 Rolldown),54 个独立入口并行编译
|
|
568
580
|
- **SCSS 处理**:自定义 `scssTransformPlugin` 在 Rolldown 管线内编译 SFC SCSS,独立 Sass CLI 仅编译共享变量入口
|
|
569
581
|
- **CSS 合并**:构建后将 Vue 已完成 scoped 转换的 per-chunk CSS 与共享变量合并为单一 `style.css`,避免重复样式和原始 `:deep()` 选择器泄漏
|
|
570
582
|
- **类型导出**:统一 `export *` barrel 模式,自动生成完整 `.d.ts`
|
|
@@ -579,7 +591,7 @@ bun run build
|
|
|
579
591
|
```
|
|
580
592
|
dist/
|
|
581
593
|
├── index.js / index.cjs / index.d.ts # 主入口
|
|
582
|
-
├── C_Form.js / C_Form.cjs / C_Form.d.ts # 子路径入口(
|
|
594
|
+
├── C_Form.js / C_Form.cjs / C_Form.d.ts # 子路径入口(54 组件)
|
|
583
595
|
├── C_Form.base.css / C_Form.full.css # 基础/完整样式层级
|
|
584
596
|
├── C_Table.base.css / C_Table.full.css # 基础/完整样式层级
|
|
585
597
|
├── style.css # 合并后的全量样式
|
|
@@ -663,6 +675,14 @@ bun run release # 发布 Changesets 中待发布版本
|
|
|
663
675
|
|
|
664
676
|
本仓库的 GitHub 变更日志生成器要求在执行 `bun run version` 时提供 `GITHUB_TOKEN`,不要将令牌写入仓库。Windows 下如果 `bun run release` 在 npm 的 `prepublishOnly` 重复验证阶段停滞,可先单独确认 `bun run verify` 成功,再在 PowerShell 中用 `$env:npm_config_ignore_scripts='true'; bun run release` 发布;该设置仅跳过已手动完成的重复生命周期验证,不应省略前一步。
|
|
665
677
|
|
|
678
|
+
## 发布后的安全扫描记录(2026-10-06)
|
|
679
|
+
|
|
680
|
+
`0.13.5` 的 npm 产物与已验证产物内容一致。随后安全扫描更新了开发工具和解析依赖的锁文件,并将仓库 overrides 中的 `@xmldom/xmldom`、`fast-uri` 固定到 `0.8.15`、`3.1.8`;这部分仓库维护不覆盖已经发布的 npm 产物。
|
|
681
|
+
|
|
682
|
+
当前扫描仍报告 [braces](https://github.com/advisories/GHSA-vfj7-8cjw-p6xm) 和 [sprintf-js](https://github.com/advisories/GHSA-hp3w-g68c-fv3c) 两项上游尚无发布修复版本的告警,`bun run check:audit` 仍非零退出。保留 CI 安全门禁和真实扫描结果;待上游发布修复后更新锁文件并复验。
|
|
683
|
+
|
|
684
|
+
本机完整 `verify` 通过。同步后的 [GitHub CI](https://github.com/ChenyCHENYU/naive-ui-components/actions/runs/37463121552) 因账号 billing issue 未启动,不能将其写成远端验证通过;账号恢复后需重新运行。
|
|
685
|
+
|
|
666
686
|
## 📄 许可证
|
|
667
687
|
|
|
668
688
|
MIT License
|
package/README_EN.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
**Enterprise-grade Vue 3 component library built on Naive UI**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
54 production-ready business components extracted from Robot Admin, supporting global registration, on-demand imports (Tree-Shaking), and subpath imports.
|
|
8
8
|
|
|
9
9
|
[](https://www.npmjs.com/package/@robot-admin/naive-ui-components)
|
|
10
10
|
[](./LICENSE)
|
|
@@ -374,7 +374,18 @@ With `require-server-verification`, a successful response must include a server
|
|
|
374
374
|
|
|
375
375
|
`C_Login` remembers only the username, never the password. SMS events require a valid phone number; the local countdown starts immediately, while delivery results and server-side rate limits remain the host's responsibility. `C_City` loads its city index on first open and scopes letter navigation to its own instance; the default trigger, letters, and city items are keyboard-operable.
|
|
376
376
|
|
|
377
|
-
###
|
|
377
|
+
### Table loading
|
|
378
|
+
|
|
379
|
+
`C_Table` uses a robot SVG loading indicator in the theme's primary color by default, retains existing data, and respects reduced-motion preferences. No page configuration is required. Override the `loading` slot for custom content. The standalone `C_Loading` accepts `size` (16–120, default 48), optional `label`, and optional `color`. Disable rotation when using it with native `NSpin`:
|
|
380
|
+
|
|
381
|
+
```vue
|
|
382
|
+
<NSpin :show="loading" :size="48" :rotate="false">
|
|
383
|
+
<template #icon><C_Loading /></template>
|
|
384
|
+
<section>Page content</section>
|
|
385
|
+
</NSpin>
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### 📋 Component List (54 Components)
|
|
378
389
|
|
|
379
390
|
> 💡 All components provide **interactive live demos**. Visit the [Component Docs](https://www.tzagileteam.com/robot/components/preface) to try them out in real-time (rendered via iframe from Robot Admin production).
|
|
380
391
|
|
|
@@ -383,6 +394,7 @@ With `require-server-verification`, a successful response must include a server
|
|
|
383
394
|
| Component | Description | External Deps |
|
|
384
395
|
| ---------------- | ------------------------- | ----------------------------- |
|
|
385
396
|
| `C_Icon` | Iconify icon wrapper | `@iconify/vue` |
|
|
397
|
+
| `C_Loading` | Theme-aware SVG loading | - |
|
|
386
398
|
| `C_Code` | Code highlighting | `highlight.js` |
|
|
387
399
|
| `C_Barcode` | Barcode generator | `@chenfengyuan/vue-barcode` |
|
|
388
400
|
| `C_Captcha` | Puzzle / ALTCHA captcha | `vue3-puzzle-vcode`, `altcha` |
|
|
@@ -495,7 +507,7 @@ Install optional peers per feature: `vue-router` for `C_Breadcrumb`/`C_TagsView`
|
|
|
495
507
|
|
|
496
508
|
```
|
|
497
509
|
bun run build
|
|
498
|
-
├── 1. tsdown → Multi-entry bundling (
|
|
510
|
+
├── 1. tsdown → Multi-entry bundling (54 components ESM/CJS/DTS)
|
|
499
511
|
├── 2. sass CLI → Compile the shared-variable entry → global-scss.css
|
|
500
512
|
├── 3. merge-css.js → Merge Vue-compiled SFC CSS + global variables → style.css
|
|
501
513
|
├── 4. gen-exports.js → Auto-generate package.json exports map
|
|
@@ -505,7 +517,7 @@ bun run build
|
|
|
505
517
|
|
|
506
518
|
#### Key Technical Details
|
|
507
519
|
|
|
508
|
-
- **Build engine**: [tsdown](https://github.com/rolldown/tsdown) (Rolldown-based),
|
|
520
|
+
- **Build engine**: [tsdown](https://github.com/rolldown/tsdown) (Rolldown-based), 54 independent entries compiled in parallel
|
|
509
521
|
- **SCSS processing**: Custom `scssTransformPlugin` compiles SFC SCSS within the Rolldown pipeline; standalone Sass CLI only compiles the shared-variable entry
|
|
510
522
|
- **CSS merging**: Post-build merges Vue scoped-compiled per-chunk CSS with shared variables into a single `style.css`, avoiding duplicate styles and leaked raw `:deep()` selectors
|
|
511
523
|
- **Type exports**: Unified `export *` barrel pattern with auto-generated `.d.ts`
|
|
@@ -520,7 +532,7 @@ bun run build
|
|
|
520
532
|
```
|
|
521
533
|
dist/
|
|
522
534
|
├── index.js / index.cjs / index.d.ts # Main entry
|
|
523
|
-
├── C_Form.js / C_Form.cjs / C_Form.d.ts # Subpath entries (
|
|
535
|
+
├── C_Form.js / C_Form.cjs / C_Form.d.ts # Subpath entries (54 components)
|
|
524
536
|
├── C_Form.base.css / C_Form.full.css # Base/full style tiers
|
|
525
537
|
├── C_Table.base.css / C_Table.full.css # Base/full style tiers
|
|
526
538
|
├── style.css # Merged full styles
|
package/dist/C_ActionBar.css
CHANGED
|
@@ -1,54 +1,55 @@
|
|
|
1
|
-
/* unplugin-vue-components disabled */.c-icon[data-v-
|
|
1
|
+
/* unplugin-vue-components disabled */.c-icon[data-v-075758a0] {
|
|
2
2
|
display: inline-flex;
|
|
3
3
|
align-items: center;
|
|
4
4
|
justify-content: center;
|
|
5
|
+
position: relative;
|
|
6
|
+
flex-shrink: 0;
|
|
7
|
+
vertical-align: middle;
|
|
5
8
|
user-select: none;
|
|
6
9
|
transition: all 0.2s ease-in-out;
|
|
7
10
|
}
|
|
8
|
-
.c-icon--clickable[data-v-
|
|
11
|
+
.c-icon--clickable[data-v-075758a0] {
|
|
9
12
|
cursor: pointer;
|
|
10
13
|
}
|
|
11
|
-
.c-icon--clickable[data-v-
|
|
14
|
+
.c-icon--clickable[data-v-075758a0]:hover {
|
|
12
15
|
opacity: 0.8;
|
|
13
16
|
transform: scale(1.05);
|
|
14
17
|
}
|
|
15
|
-
.c-icon--clickable[data-v-
|
|
18
|
+
.c-icon--clickable[data-v-075758a0]:active {
|
|
16
19
|
transform: scale(0.95);
|
|
17
20
|
}
|
|
18
|
-
.c-icon--clickable[data-v-
|
|
21
|
+
.c-icon--clickable[data-v-075758a0]:focus-visible {
|
|
19
22
|
outline: 2px solid currentColor;
|
|
20
23
|
outline-offset: 2px;
|
|
21
24
|
border-radius: 4px;
|
|
22
25
|
}
|
|
23
|
-
.c-icon--loading[data-v-
|
|
26
|
+
.c-icon--loading[data-v-075758a0] {
|
|
24
27
|
opacity: 0.6;
|
|
25
28
|
cursor: wait;
|
|
26
29
|
}
|
|
27
|
-
.c-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
.c-icon__loading[data-v-711aedcd] {
|
|
31
|
-
position: relative;
|
|
30
|
+
.c-icon__loading[data-v-075758a0] {
|
|
31
|
+
position: absolute;
|
|
32
|
+
inset: 0;
|
|
32
33
|
}
|
|
33
|
-
.c-icon__spinner[data-v-
|
|
34
|
+
.c-icon__spinner[data-v-075758a0] {
|
|
34
35
|
width: 100%;
|
|
35
36
|
height: 100%;
|
|
36
37
|
border: 2px solid currentColor;
|
|
37
38
|
border-radius: 50%;
|
|
38
39
|
border-top-color: transparent;
|
|
39
|
-
animation: spin-
|
|
40
|
+
animation: spin-075758a0 1s linear infinite;
|
|
40
41
|
}
|
|
41
|
-
.c-icon__error[data-v-
|
|
42
|
+
.c-icon__error[data-v-075758a0] {
|
|
42
43
|
font-size: 0.8em;
|
|
43
44
|
opacity: 0.5;
|
|
44
45
|
}
|
|
45
|
-
.c-icon__rotatable[data-v-
|
|
46
|
+
.c-icon__rotatable[data-v-075758a0] {
|
|
46
47
|
transition: transform 0.3s ease-in-out;
|
|
47
48
|
}
|
|
48
|
-
.c-icon__flippable[data-v-
|
|
49
|
+
.c-icon__flippable[data-v-075758a0] {
|
|
49
50
|
transition: transform 0.3s ease-in-out;
|
|
50
51
|
}
|
|
51
|
-
@keyframes spin-
|
|
52
|
+
@keyframes spin-075758a0 {
|
|
52
53
|
0% {
|
|
53
54
|
transform: rotate(0deg);
|
|
54
55
|
}
|
|
@@ -56,10 +57,16 @@
|
|
|
56
57
|
transform: rotate(360deg);
|
|
57
58
|
}
|
|
58
59
|
}
|
|
60
|
+
/* unplugin-vue-components disabled */
|
|
61
|
+
/* layer: default */
|
|
62
|
+
.inline-flex[data-v-075758a0]{display:inline-flex;}
|
|
63
|
+
.transform[data-v-075758a0]{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}
|
|
64
|
+
.px[data-v-075758a0]{padding-left:1rem;padding-right:1rem;}
|
|
65
|
+
|
|
59
66
|
|
|
60
67
|
/* unplugin-vue-components disabled *//* 通用操作按钮组件样式 */
|
|
61
68
|
/* ================= 主容器 ================= */
|
|
62
|
-
.c-action-bar[data-v-
|
|
69
|
+
.c-action-bar[data-v-325a50d2] {
|
|
63
70
|
display: flex;
|
|
64
71
|
align-items: center;
|
|
65
72
|
justify-content: space-between;
|
|
@@ -70,26 +77,26 @@
|
|
|
70
77
|
border: 1px solid var(--c-border);
|
|
71
78
|
transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
|
|
72
79
|
}
|
|
73
|
-
.c-action-bar.is-align-left[data-v-
|
|
80
|
+
.c-action-bar.is-align-left[data-v-325a50d2] {
|
|
74
81
|
justify-content: flex-start;
|
|
75
82
|
}
|
|
76
|
-
.c-action-bar.is-align-center[data-v-
|
|
83
|
+
.c-action-bar.is-align-center[data-v-325a50d2] {
|
|
77
84
|
justify-content: center;
|
|
78
85
|
}
|
|
79
|
-
.c-action-bar.is-align-right[data-v-
|
|
86
|
+
.c-action-bar.is-align-right[data-v-325a50d2] {
|
|
80
87
|
justify-content: flex-end;
|
|
81
88
|
}
|
|
82
|
-
.c-action-bar.is-align-space-between[data-v-
|
|
89
|
+
.c-action-bar.is-align-space-between[data-v-325a50d2] {
|
|
83
90
|
justify-content: space-between;
|
|
84
91
|
}
|
|
85
|
-
.c-action-bar.is-align-space-around[data-v-
|
|
92
|
+
.c-action-bar.is-align-space-around[data-v-325a50d2] {
|
|
86
93
|
justify-content: space-around;
|
|
87
94
|
}
|
|
88
|
-
.c-action-bar.is-compact[data-v-
|
|
95
|
+
.c-action-bar.is-compact[data-v-325a50d2] {
|
|
89
96
|
padding: 8px;
|
|
90
97
|
margin-bottom: 8px;
|
|
91
98
|
}
|
|
92
|
-
.c-action-bar.is-inline[data-v-
|
|
99
|
+
.c-action-bar.is-inline[data-v-325a50d2] {
|
|
93
100
|
padding: 0;
|
|
94
101
|
margin-bottom: 0;
|
|
95
102
|
background: transparent;
|
|
@@ -97,97 +104,97 @@
|
|
|
97
104
|
border-radius: 0;
|
|
98
105
|
box-shadow: none;
|
|
99
106
|
}
|
|
100
|
-
.c-action-bar.is-wrap[data-v-
|
|
107
|
+
.c-action-bar.is-wrap[data-v-325a50d2] {
|
|
101
108
|
flex-wrap: wrap;
|
|
102
109
|
gap: 8px;
|
|
103
110
|
}
|
|
104
111
|
@media (max-width: 768px) {
|
|
105
|
-
.c-action-bar[data-v-
|
|
112
|
+
.c-action-bar[data-v-325a50d2] {
|
|
106
113
|
flex-direction: column;
|
|
107
114
|
gap: 12px;
|
|
108
115
|
}
|
|
109
|
-
.c-action-bar .actions-group[data-v-
|
|
116
|
+
.c-action-bar .actions-group[data-v-325a50d2] {
|
|
110
117
|
width: 100%;
|
|
111
118
|
justify-content: center;
|
|
112
119
|
}
|
|
113
120
|
}
|
|
114
121
|
|
|
115
122
|
/* ================= 按钮组 ================= */
|
|
116
|
-
.actions-group[data-v-
|
|
123
|
+
.actions-group[data-v-325a50d2] {
|
|
117
124
|
display: flex;
|
|
118
125
|
align-items: center;
|
|
119
126
|
gap: 12px;
|
|
120
127
|
flex-wrap: nowrap;
|
|
121
128
|
}
|
|
122
|
-
.actions-group.actions-left[data-v-
|
|
129
|
+
.actions-group.actions-left[data-v-325a50d2] {
|
|
123
130
|
justify-content: flex-start;
|
|
124
131
|
}
|
|
125
|
-
.actions-group.actions-right[data-v-
|
|
132
|
+
.actions-group.actions-right[data-v-325a50d2] {
|
|
126
133
|
justify-content: flex-end;
|
|
127
134
|
}
|
|
128
|
-
.c-action-bar.has-only-left.is-align-center .actions-group.actions-left[data-v-
|
|
135
|
+
.c-action-bar.has-only-left.is-align-center .actions-group.actions-left[data-v-325a50d2], .c-action-bar.has-only-right.is-align-center .actions-group.actions-right[data-v-325a50d2] {
|
|
129
136
|
width: 100%;
|
|
130
137
|
justify-content: center;
|
|
131
138
|
}
|
|
132
|
-
.c-action-bar.has-only-left.is-align-space-between .actions-group.actions-left[data-v-
|
|
139
|
+
.c-action-bar.has-only-left.is-align-space-between .actions-group.actions-left[data-v-325a50d2], .c-action-bar.has-only-right.is-align-space-between .actions-group.actions-right[data-v-325a50d2] {
|
|
133
140
|
width: 100%;
|
|
134
141
|
justify-content: space-between;
|
|
135
142
|
}
|
|
136
|
-
.c-action-bar.has-only-left.is-align-space-around .actions-group.actions-left[data-v-
|
|
143
|
+
.c-action-bar.has-only-left.is-align-space-around .actions-group.actions-left[data-v-325a50d2], .c-action-bar.has-only-right.is-align-space-around .actions-group.actions-right[data-v-325a50d2] {
|
|
137
144
|
width: 100%;
|
|
138
145
|
justify-content: space-around;
|
|
139
146
|
}
|
|
140
|
-
.c-action-bar.has-only-left.is-align-right .actions-group.actions-left[data-v-
|
|
147
|
+
.c-action-bar.has-only-left.is-align-right .actions-group.actions-left[data-v-325a50d2] {
|
|
141
148
|
width: 100%;
|
|
142
149
|
justify-content: flex-end;
|
|
143
150
|
}
|
|
144
|
-
.c-action-bar.has-only-right.is-align-left .actions-group.actions-right[data-v-
|
|
151
|
+
.c-action-bar.has-only-right.is-align-left .actions-group.actions-right[data-v-325a50d2] {
|
|
145
152
|
width: 100%;
|
|
146
153
|
justify-content: flex-start;
|
|
147
154
|
}
|
|
148
|
-
.actions-group[data-v-
|
|
155
|
+
.actions-group[data-v-325a50d2] .n-button {
|
|
149
156
|
transition: color 0.16s ease, background-color 0.16s ease, border-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
|
|
150
157
|
font-weight: 500;
|
|
151
158
|
}
|
|
152
|
-
.actions-group[data-v-
|
|
159
|
+
.actions-group[data-v-325a50d2] .n-button .n-icon {
|
|
153
160
|
transition: transform 0.3s ease;
|
|
154
161
|
}
|
|
155
|
-
.actions-group[data-v-
|
|
162
|
+
.actions-group[data-v-325a50d2] .n-button:hover:not(:disabled) {
|
|
156
163
|
transform: translateY(-1px);
|
|
157
164
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
|
|
158
165
|
}
|
|
159
|
-
.actions-group[data-v-
|
|
166
|
+
.actions-group[data-v-325a50d2] .n-button:hover:not(:disabled) .n-icon {
|
|
160
167
|
transform: scale(1.1);
|
|
161
168
|
}
|
|
162
|
-
.actions-group[data-v-
|
|
169
|
+
.actions-group[data-v-325a50d2] .n-button:active:not(:disabled) {
|
|
163
170
|
transform: translateY(0);
|
|
164
171
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
165
172
|
}
|
|
166
|
-
.actions-group[data-v-
|
|
173
|
+
.actions-group[data-v-325a50d2] .n-button:disabled {
|
|
167
174
|
cursor: not-allowed;
|
|
168
175
|
opacity: 0.5;
|
|
169
176
|
}
|
|
170
|
-
.actions-group[data-v-
|
|
177
|
+
.actions-group[data-v-325a50d2] .n-button.n-button--loading {
|
|
171
178
|
pointer-events: none;
|
|
172
179
|
}
|
|
173
|
-
.actions-group[data-v-
|
|
180
|
+
.actions-group[data-v-325a50d2] .n-button--primary-type:hover:not(:disabled) {
|
|
174
181
|
box-shadow: 0 4px 12px rgba(24, 160, 88, 0.3);
|
|
175
182
|
}
|
|
176
|
-
.actions-group[data-v-
|
|
183
|
+
.actions-group[data-v-325a50d2] .n-button--info-type:hover:not(:disabled) {
|
|
177
184
|
box-shadow: 0 4px 12px rgba(42, 148, 125, 0.3);
|
|
178
185
|
}
|
|
179
|
-
.actions-group[data-v-
|
|
186
|
+
.actions-group[data-v-325a50d2] .n-button--success-type:hover:not(:disabled) {
|
|
180
187
|
box-shadow: 0 4px 12px rgba(99, 226, 183, 0.3);
|
|
181
188
|
}
|
|
182
|
-
.actions-group[data-v-
|
|
189
|
+
.actions-group[data-v-325a50d2] .n-button--warning-type:hover:not(:disabled) {
|
|
183
190
|
box-shadow: 0 4px 12px rgba(240, 138, 0, 0.3);
|
|
184
191
|
}
|
|
185
|
-
.actions-group[data-v-
|
|
192
|
+
.actions-group[data-v-325a50d2] .n-button--error-type:hover:not(:disabled) {
|
|
186
193
|
box-shadow: 0 4px 12px rgba(208, 48, 80, 0.3);
|
|
187
194
|
}
|
|
188
195
|
|
|
189
196
|
/* ================= 中间插槽区域 ================= */
|
|
190
|
-
.actions-center[data-v-
|
|
197
|
+
.actions-center[data-v-325a50d2] {
|
|
191
198
|
display: flex;
|
|
192
199
|
align-items: center;
|
|
193
200
|
justify-content: center;
|
|
@@ -197,32 +204,32 @@
|
|
|
197
204
|
}
|
|
198
205
|
|
|
199
206
|
/* ================= 分隔线 ================= */
|
|
200
|
-
.action-divider[data-v-
|
|
207
|
+
.action-divider[data-v-325a50d2] {
|
|
201
208
|
margin: 0 8px !important;
|
|
202
209
|
height: 20px;
|
|
203
210
|
opacity: 0.3;
|
|
204
211
|
transition: opacity 0.3s ease;
|
|
205
212
|
}
|
|
206
|
-
.action-divider[data-v-
|
|
213
|
+
.action-divider[data-v-325a50d2]:hover {
|
|
207
214
|
opacity: 0.6;
|
|
208
215
|
}
|
|
209
216
|
|
|
210
217
|
/* ================= 下拉菜单优化 ================= */
|
|
211
|
-
[data-v-
|
|
218
|
+
[data-v-325a50d2] .n-dropdown-option {
|
|
212
219
|
transition: all 0.2s ease;
|
|
213
220
|
}
|
|
214
|
-
[data-v-
|
|
221
|
+
[data-v-325a50d2] .n-dropdown-option:hover {
|
|
215
222
|
transform: translateX(4px);
|
|
216
223
|
}
|
|
217
|
-
[data-v-
|
|
224
|
+
[data-v-325a50d2] .n-dropdown-option .n-icon {
|
|
218
225
|
transition: transform 0.2s ease;
|
|
219
226
|
}
|
|
220
|
-
[data-v-
|
|
227
|
+
[data-v-325a50d2] .n-dropdown-option:hover .n-icon {
|
|
221
228
|
transform: scale(1.15);
|
|
222
229
|
}
|
|
223
230
|
|
|
224
231
|
/* ================= 加载动画 ================= */
|
|
225
|
-
@keyframes button-loading-
|
|
232
|
+
@keyframes button-loading-325a50d2 {
|
|
226
233
|
0% {
|
|
227
234
|
opacity: 0.6;
|
|
228
235
|
}
|
|
@@ -233,12 +240,12 @@
|
|
|
233
240
|
opacity: 0.6;
|
|
234
241
|
}
|
|
235
242
|
}
|
|
236
|
-
[data-v-
|
|
237
|
-
animation: button-loading-
|
|
243
|
+
[data-v-325a50d2] .n-button--loading {
|
|
244
|
+
animation: button-loading-325a50d2 1.5s ease-in-out infinite;
|
|
238
245
|
}
|
|
239
246
|
|
|
240
247
|
/* ================= Tooltip 样式 ================= */
|
|
241
|
-
[data-v-
|
|
248
|
+
[data-v-325a50d2] .n-tooltip .n-tooltip__content {
|
|
242
249
|
font-size: 12px;
|
|
243
250
|
padding: 6px 10px;
|
|
244
251
|
border-radius: 4px;
|
|
@@ -247,16 +254,21 @@
|
|
|
247
254
|
}
|
|
248
255
|
|
|
249
256
|
/* ================= 暗黑模式适配 ================= */
|
|
250
|
-
html.dark .c-action-bar[data-v-
|
|
257
|
+
html.dark .c-action-bar[data-v-325a50d2] {
|
|
251
258
|
border-color: rgba(255, 255, 255, 0.09);
|
|
252
259
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
253
260
|
}
|
|
254
|
-
html.dark .actions-group[data-v-
|
|
261
|
+
html.dark .actions-group[data-v-325a50d2] .n-button:hover:not(:disabled) {
|
|
255
262
|
box-shadow: 0 4px 12px rgba(255, 255, 255, 0.1);
|
|
256
263
|
}
|
|
257
|
-
html.dark .action-divider[data-v-
|
|
264
|
+
html.dark .action-divider[data-v-325a50d2] {
|
|
258
265
|
opacity: 0.15;
|
|
259
266
|
}
|
|
260
|
-
html.dark .action-divider[data-v-
|
|
267
|
+
html.dark .action-divider[data-v-325a50d2]:hover {
|
|
261
268
|
opacity: 0.4;
|
|
262
269
|
}
|
|
270
|
+
/* unplugin-vue-components disabled */
|
|
271
|
+
/* layer: default */
|
|
272
|
+
.inline[data-v-325a50d2]{display:inline;}
|
|
273
|
+
.px[data-v-325a50d2]{padding-left:1rem;padding-right:1rem;}
|
|
274
|
+
|
package/dist/C_ActionBar2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i=`mdi:gesture-tap-button`,a={align:`left`,size:`tiny`,gap:6,wrap:!1,showDivider:!1,dividerType:`vertical`,compact:!0,inline:!0},o={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`}},s=e=>{let t=e.key?o[e.key]:void 0;return{...t,...e,label:e.label||t?.label||e.key||`操作`,icon:e.icon||t?.icon||i}},c=e=>typeof e==`function`?e():(0,n.unref)(e),l=e=>e,u={key:1,class:`actions-center`},d=(0,n.defineComponent)({name:`C_ActionBar`,__name:`index`,props:{actions:{default:()=>[]},leftActions:{default:()=>[]},rightActions:{default:()=>[]},config:{default:()=>({})}},emits:[`action-click`,`dropdown-click`],setup(t,{emit:i}){let o=t,l=i,d=(0,n.computed)(()=>({...a,...o.config})),f=(0,n.computed)(()=>{if(o.leftActions&&o.leftActions.length>0)return o.leftActions.filter(e=>m(e));if(o.actions.length>0){let e=o.rightActions&&o.rightActions.length>0,t=o.actions.some(e=>e.group===`right`);return!e&&!t?o.actions.filter(e=>m(e)):o.actions.filter(e=>e.group!==`right`&&m(e))}return[]}),p=(0,n.computed)(()=>o.rightActions&&o.rightActions.length>0?o.rightActions.filter(e=>m(e)):o.actions.filter(e=>e.group===`right`&&m(e))),m=e=>e.show===void 0?!0:c(e.show)??!0,h=(0,n.shallowReactive)(new Set),g=e=>c(e.disabled)||h.has(e),_=e=>c(e.loading)||h.has(e),v=async e=>{if(!(e.dropdown&&e.dropdown.length>0)&&!(g(e)||_(e))&&(l(`action-click`,e),e.onClick)){e.autoLoading!==!1&&h.add(e);try{await e.onClick()}finally{h.delete(e)}}},y=async(e,t)=>{l(`dropdown-click`,e,t),e.onClick&&await e.onClick()},b=(0,n.defineComponent)({name:`ActionButton`,props:{action:{type:Object,required:!0}},emits:[`click`,`dropdown-select`],setup(t,{emit:i}){let a=(0,n.computed)(()=>t.action),o=(0,n.computed)(()=>s(a.value)),l=(0,n.computed)(()=>o.value.size||d.value.size),u=(0,n.computed)(()=>({tiny:14,small:15,medium:16,large:18})[l.value]),f=(0,n.computed)(()=>o.value.dropdown?o.value.dropdown.filter(e=>e.show===void 0?!0:c(e.show)).map(t=>{let{icon:r}=t;return{key:t.key,label:t.label,icon:r?()=>(0,n.h)(e.t,{name:r,size:14,"aria-hidden":!0}):void 0,disabled:c(t.disabled)}}):[]),p=e=>{let t=o.value.dropdown?.find(t=>t.key===e);t&&i(`dropdown-select`,t)},m=t=>{let{icon:i}=o.value,s=(0,n.h)(r.NButton,{type:o.value.type||`default`,size:l.value,loading:_(a.value),disabled:g(a.value),...t,...o.value.buttonProps},{default:()=>o.value.label,icon:i?()=>(0,n.h)(e.t,{name:i,size:u.value,"aria-hidden":!0}):void 0});return o.value.directives&&o.value.directives.length>0?(0,n.withDirectives)(s,o.value.directives):s},h=()=>{let e=m({onClick:()=>i(`click`)});return o.value.tooltip?(0,n.h)(r.NTooltip,{placement:`top`},{trigger:()=>e,default:()=>o.value.tooltip}):e},v=()=>{let e=m();return(0,n.h)(r.NDropdown,{options:f.value,onSelect:p},{default:()=>e})};return()=>o.value.dropdown&&o.value.dropdown.length>0?v():h()}});return(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:(0,n.normalizeClass)([`c-action-bar`,{"is-compact":d.value.compact,"is-inline":d.value.inline,"is-wrap":d.value.wrap,[`is-align-${d.value.align}`]:!0,"has-only-left":f.value.length>0&&p.value.length===0&&!e.$slots.center,"has-only-right":p.value.length>0&&f.value.length===0&&!e.$slots.center}])},[f.value.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`actions-group actions-left`,style:(0,n.normalizeStyle)({gap:`${d.value.gap}px`})},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(f.value,(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:e.key||`left-${t}`},[(0,n.createVNode)((0,n.unref)(b),{action:e,onClick:t=>v(e),onDropdownSelect:t=>y(t,e)},null,8,[`action`,`onClick`,`onDropdownSelect`]),d.value.showDivider&&t<f.value.length-1&&d.value.dividerType===`vertical`?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NDivider),{key:0,vertical:``,class:`action-divider`})):(0,n.createCommentVNode)(`v-if`,!0)],64))),128))],4)):(0,n.createCommentVNode)(`v-if`,!0),e.$slots.center?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[(0,n.renderSlot)(e.$slots,`center`,{},void 0,!0)])):(0,n.createCommentVNode)(`v-if`,!0),p.value.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:2,class:`actions-group actions-right`,style:(0,n.normalizeStyle)({gap:`${d.value.gap}px`})},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(p.value,(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:e.key||`right-${t}`},[(0,n.createVNode)((0,n.unref)(b),{action:e,onClick:t=>v(e),onDropdownSelect:t=>y(t,e)},null,8,[`action`,`onClick`,`onDropdownSelect`]),d.value.showDivider&&t<p.value.length-1&&d.value.dividerType===`vertical`?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NDivider),{key:0,vertical:``,class:`action-divider`})):(0,n.createCommentVNode)(`v-if`,!0)],64))),128))],4)):(0,n.createCommentVNode)(`v-if`,!0)],2))}});var f=t.t(d,[[`__scopeId`,`data-v-
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i=`mdi:gesture-tap-button`,a={align:`left`,size:`tiny`,gap:6,wrap:!1,showDivider:!1,dividerType:`vertical`,compact:!0,inline:!0},o={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`}},s=e=>{let t=e.key?o[e.key]:void 0;return{...t,...e,label:e.label||t?.label||e.key||`操作`,icon:e.icon||t?.icon||i}},c=e=>typeof e==`function`?e():(0,n.unref)(e),l=e=>e,u={key:1,class:`actions-center`},d=(0,n.defineComponent)({name:`C_ActionBar`,__name:`index`,props:{actions:{default:()=>[]},leftActions:{default:()=>[]},rightActions:{default:()=>[]},config:{default:()=>({})}},emits:[`action-click`,`dropdown-click`],setup(t,{emit:i}){let o=t,l=i,d=(0,n.computed)(()=>({...a,...o.config})),f=(0,n.computed)(()=>{if(o.leftActions&&o.leftActions.length>0)return o.leftActions.filter(e=>m(e));if(o.actions.length>0){let e=o.rightActions&&o.rightActions.length>0,t=o.actions.some(e=>e.group===`right`);return!e&&!t?o.actions.filter(e=>m(e)):o.actions.filter(e=>e.group!==`right`&&m(e))}return[]}),p=(0,n.computed)(()=>o.rightActions&&o.rightActions.length>0?o.rightActions.filter(e=>m(e)):o.actions.filter(e=>e.group===`right`&&m(e))),m=e=>e.show===void 0?!0:c(e.show)??!0,h=(0,n.shallowReactive)(new Set),g=e=>c(e.disabled)||h.has(e),_=e=>c(e.loading)||h.has(e),v=async e=>{if(!(e.dropdown&&e.dropdown.length>0)&&!(g(e)||_(e))&&(l(`action-click`,e),e.onClick)){e.autoLoading!==!1&&h.add(e);try{await e.onClick()}finally{h.delete(e)}}},y=async(e,t)=>{l(`dropdown-click`,e,t),e.onClick&&await e.onClick()},b=(0,n.defineComponent)({name:`ActionButton`,props:{action:{type:Object,required:!0}},emits:[`click`,`dropdown-select`],setup(t,{emit:i}){let a=(0,n.computed)(()=>t.action),o=(0,n.computed)(()=>s(a.value)),l=(0,n.computed)(()=>o.value.size||d.value.size),u=(0,n.computed)(()=>({tiny:14,small:15,medium:16,large:18})[l.value]),f=(0,n.computed)(()=>o.value.dropdown?o.value.dropdown.filter(e=>e.show===void 0?!0:c(e.show)).map(t=>{let{icon:r}=t;return{key:t.key,label:t.label,icon:r?()=>(0,n.h)(e.t,{name:r,size:14,"aria-hidden":!0}):void 0,disabled:c(t.disabled)}}):[]),p=e=>{let t=o.value.dropdown?.find(t=>t.key===e);t&&i(`dropdown-select`,t)},m=t=>{let{icon:i}=o.value,s=(0,n.h)(r.NButton,{type:o.value.type||`default`,size:l.value,loading:_(a.value),disabled:g(a.value),...t,...o.value.buttonProps},{default:()=>o.value.label,icon:i?()=>(0,n.h)(e.t,{name:i,size:u.value,"aria-hidden":!0}):void 0});return o.value.directives&&o.value.directives.length>0?(0,n.withDirectives)(s,o.value.directives):s},h=()=>{let e=m({onClick:()=>i(`click`)});return o.value.tooltip?(0,n.h)(r.NTooltip,{placement:`top`},{trigger:()=>e,default:()=>o.value.tooltip}):e},v=()=>{let e=m();return(0,n.h)(r.NDropdown,{options:f.value,onSelect:p},{default:()=>e})};return()=>o.value.dropdown&&o.value.dropdown.length>0?v():h()}});return(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:(0,n.normalizeClass)([`c-action-bar`,{"is-compact":d.value.compact,"is-inline":d.value.inline,"is-wrap":d.value.wrap,[`is-align-${d.value.align}`]:!0,"has-only-left":f.value.length>0&&p.value.length===0&&!e.$slots.center,"has-only-right":p.value.length>0&&f.value.length===0&&!e.$slots.center}])},[f.value.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`actions-group actions-left`,style:(0,n.normalizeStyle)({gap:`${d.value.gap}px`})},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(f.value,(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:e.key||`left-${t}`},[(0,n.createVNode)((0,n.unref)(b),{action:e,onClick:t=>v(e),onDropdownSelect:t=>y(t,e)},null,8,[`action`,`onClick`,`onDropdownSelect`]),d.value.showDivider&&t<f.value.length-1&&d.value.dividerType===`vertical`?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NDivider),{key:0,vertical:``,class:`action-divider`})):(0,n.createCommentVNode)(`v-if`,!0)],64))),128))],4)):(0,n.createCommentVNode)(`v-if`,!0),e.$slots.center?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,u,[(0,n.renderSlot)(e.$slots,`center`,{},void 0,!0)])):(0,n.createCommentVNode)(`v-if`,!0),p.value.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:2,class:`actions-group actions-right`,style:(0,n.normalizeStyle)({gap:`${d.value.gap}px`})},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(p.value,(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:e.key||`right-${t}`},[(0,n.createVNode)((0,n.unref)(b),{action:e,onClick:t=>v(e),onDropdownSelect:t=>y(t,e)},null,8,[`action`,`onClick`,`onDropdownSelect`]),d.value.showDivider&&t<p.value.length-1&&d.value.dividerType===`vertical`?((0,n.openBlock)(),(0,n.createBlock)((0,n.unref)(r.NDivider),{key:0,vertical:``,class:`action-divider`})):(0,n.createCommentVNode)(`v-if`,!0)],64))),128))],4)):(0,n.createCommentVNode)(`v-if`,!0)],2))}});var f=t.t(d,[[`__scopeId`,`data-v-325a50d2`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return f}});
|
package/dist/C_ActionBar2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createVNode as s,defineComponent as c,h as l,normalizeClass as u,normalizeStyle as d,openBlock as f,renderList as p,renderSlot as m,shallowReactive 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(c({name:`C_ActionBar`,__name:`index`,props:{actions:{default:()=>[]},leftActions:{default:()=>[]},rightActions:{default:()=>[]},config:{default:()=>({})}},emits:[`action-click`,`dropdown-click`],setup(t,{emit:S}){let w=t,D=S,k=r(()=>({...C,...w.config})),A=r(()=>{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=r(()=>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=h(new Set),P=e=>E(e.disabled)||N.has(e),F=e=>E(e.loading)||N.has(e),I=async e=>{if(!(e.dropdown&&e.dropdown.length>0)&&!(P(e)||F(e))&&(D(`action-click`,e),e.onClick)){e.autoLoading!==!1&&N.add(e);try{await e.onClick()}finally{N.delete(e)}}},L=async(e,t)=>{D(`dropdown-click`,e,t),e.onClick&&await e.onClick()},R=c({name:`ActionButton`,props:{action:{type:Object,required:!0}},emits:[`click`,`dropdown-select`],setup(t,{emit:n}){let i=r(()=>t.action),a=r(()=>T(i.value)),o=r(()=>a.value.size||k.value.size),s=r(()=>({tiny:14,small:15,medium:16,large:18})[o.value]),c=r(()=>a.value.dropdown?a.value.dropdown.filter(e=>e.show===void 0?!0:E(e.show)).map(t=>{let{icon:n}=t;return{key:t.key,label:t.label,icon:n?()=>l(e,{name:n,size:14,"aria-hidden":!0}):void 0,disabled:E(t.disabled)}}):[]),u=e=>{let t=a.value.dropdown?.find(t=>t.key===e);t&&n(`dropdown-select`,t)},d=t=>{let{icon:n}=a.value,r=l(v,{type:a.value.type||`default`,size:o.value,loading:F(i.value),disabled:P(i.value),...t,...a.value.buttonProps},{default:()=>a.value.label,icon:n?()=>l(e,{name:n,size:s.value,"aria-hidden":!0}):void 0});return a.value.directives&&a.value.directives.length>0?_(r,a.value.directives):r},f=()=>{let e=d({onClick:()=>n(`click`)});return a.value.tooltip?l(x,{placement:`top`},{trigger:()=>e,default:()=>a.value.tooltip}):e},p=()=>{let e=d();return l(b,{options:c.value,onSelect:u},{default:()=>e})};return()=>a.value.dropdown&&a.value.dropdown.length>0?p():f()}});return(e,t)=>(f(),o(`div`,{class:u([`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":A.value.length>0&&j.value.length===0&&!e.$slots.center,"has-only-right":j.value.length>0&&A.value.length===0&&!e.$slots.center}])},[A.value.length>0?(f(),o(`div`,{key:0,class:`actions-group actions-left`,style:d({gap:`${k.value.gap}px`})},[(f(!0),o(n,null,p(A.value,(e,t)=>(f(),o(n,{key:e.key||`left-${t}`},[s(g(R),{action:e,onClick:t=>I(e),onDropdownSelect:t=>L(t,e)},null,8,[`action`,`onClick`,`onDropdownSelect`]),k.value.showDivider&&t<A.value.length-1&&k.value.dividerType===`vertical`?(f(),i(g(y),{key:0,vertical:``,class:`action-divider`})):a(`v-if`,!0)],64))),128))],4)):a(`v-if`,!0),e.$slots.center?(f(),o(`div`,O,[m(e.$slots,`center`,{},void 0,!0)])):a(`v-if`,!0),j.value.length>0?(f(),o(`div`,{key:2,class:`actions-group actions-right`,style:d({gap:`${k.value.gap}px`})},[(f(!0),o(n,null,p(j.value,(e,t)=>(f(),o(n,{key:e.key||`right-${t}`},[s(g(R),{action:e,onClick:t=>I(e),onDropdownSelect:t=>L(t,e)},null,8,[`action`,`onClick`,`onDropdownSelect`]),k.value.showDivider&&t<j.value.length-1&&k.value.dividerType===`vertical`?(f(),i(g(y),{key:0,vertical:``,class:`action-divider`})):a(`v-if`,!0)],64))),128))],4)):a(`v-if`,!0)],2))}}),[[`__scopeId`,`data-v-
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createVNode as s,defineComponent as c,h as l,normalizeClass as u,normalizeStyle as d,openBlock as f,renderList as p,renderSlot as m,shallowReactive 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(c({name:`C_ActionBar`,__name:`index`,props:{actions:{default:()=>[]},leftActions:{default:()=>[]},rightActions:{default:()=>[]},config:{default:()=>({})}},emits:[`action-click`,`dropdown-click`],setup(t,{emit:S}){let w=t,D=S,k=r(()=>({...C,...w.config})),A=r(()=>{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=r(()=>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=h(new Set),P=e=>E(e.disabled)||N.has(e),F=e=>E(e.loading)||N.has(e),I=async e=>{if(!(e.dropdown&&e.dropdown.length>0)&&!(P(e)||F(e))&&(D(`action-click`,e),e.onClick)){e.autoLoading!==!1&&N.add(e);try{await e.onClick()}finally{N.delete(e)}}},L=async(e,t)=>{D(`dropdown-click`,e,t),e.onClick&&await e.onClick()},R=c({name:`ActionButton`,props:{action:{type:Object,required:!0}},emits:[`click`,`dropdown-select`],setup(t,{emit:n}){let i=r(()=>t.action),a=r(()=>T(i.value)),o=r(()=>a.value.size||k.value.size),s=r(()=>({tiny:14,small:15,medium:16,large:18})[o.value]),c=r(()=>a.value.dropdown?a.value.dropdown.filter(e=>e.show===void 0?!0:E(e.show)).map(t=>{let{icon:n}=t;return{key:t.key,label:t.label,icon:n?()=>l(e,{name:n,size:14,"aria-hidden":!0}):void 0,disabled:E(t.disabled)}}):[]),u=e=>{let t=a.value.dropdown?.find(t=>t.key===e);t&&n(`dropdown-select`,t)},d=t=>{let{icon:n}=a.value,r=l(v,{type:a.value.type||`default`,size:o.value,loading:F(i.value),disabled:P(i.value),...t,...a.value.buttonProps},{default:()=>a.value.label,icon:n?()=>l(e,{name:n,size:s.value,"aria-hidden":!0}):void 0});return a.value.directives&&a.value.directives.length>0?_(r,a.value.directives):r},f=()=>{let e=d({onClick:()=>n(`click`)});return a.value.tooltip?l(x,{placement:`top`},{trigger:()=>e,default:()=>a.value.tooltip}):e},p=()=>{let e=d();return l(b,{options:c.value,onSelect:u},{default:()=>e})};return()=>a.value.dropdown&&a.value.dropdown.length>0?p():f()}});return(e,t)=>(f(),o(`div`,{class:u([`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":A.value.length>0&&j.value.length===0&&!e.$slots.center,"has-only-right":j.value.length>0&&A.value.length===0&&!e.$slots.center}])},[A.value.length>0?(f(),o(`div`,{key:0,class:`actions-group actions-left`,style:d({gap:`${k.value.gap}px`})},[(f(!0),o(n,null,p(A.value,(e,t)=>(f(),o(n,{key:e.key||`left-${t}`},[s(g(R),{action:e,onClick:t=>I(e),onDropdownSelect:t=>L(t,e)},null,8,[`action`,`onClick`,`onDropdownSelect`]),k.value.showDivider&&t<A.value.length-1&&k.value.dividerType===`vertical`?(f(),i(g(y),{key:0,vertical:``,class:`action-divider`})):a(`v-if`,!0)],64))),128))],4)):a(`v-if`,!0),e.$slots.center?(f(),o(`div`,O,[m(e.$slots,`center`,{},void 0,!0)])):a(`v-if`,!0),j.value.length>0?(f(),o(`div`,{key:2,class:`actions-group actions-right`,style:d({gap:`${k.value.gap}px`})},[(f(!0),o(n,null,p(j.value,(e,t)=>(f(),o(n,{key:e.key||`right-${t}`},[s(g(R),{action:e,onClick:t=>I(e),onDropdownSelect:t=>L(t,e)},null,8,[`action`,`onClick`,`onDropdownSelect`]),k.value.showDivider&&t<j.value.length-1&&k.value.dividerType===`vertical`?(f(),i(g(y),{key:0,vertical:``,class:`action-divider`})):a(`v-if`,!0)],64))),128))],4)):a(`v-if`,!0)],2))}}),[[`__scopeId`,`data-v-325a50d2`]]);export{D as a,S as i,C as n,T as o,w as r,k as t};
|