@robot-admin/naive-ui-components 0.13.8 → 0.13.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +22 -5
  3. package/README_EN.md +22 -5
  4. package/dist/C_PageLoading.cjs +1 -0
  5. package/dist/C_PageLoading.css +152 -0
  6. package/dist/C_PageLoading.d.cts +2 -0
  7. package/dist/C_PageLoading.d.ts +2 -0
  8. package/dist/C_PageLoading.js +1 -0
  9. package/dist/constants.d.cts +1 -1
  10. package/dist/constants.d.ts +1 -1
  11. package/dist/constants2.d.cts +3 -3
  12. package/dist/constants2.d.ts +3 -3
  13. package/dist/constants4.d.cts +6 -6
  14. package/dist/constants4.d.ts +6 -6
  15. package/dist/constants5.d.cts +4 -4
  16. package/dist/constants5.d.ts +4 -4
  17. package/dist/createPageLoading.cjs +1 -0
  18. package/dist/createPageLoading.d.cts +32 -0
  19. package/dist/createPageLoading.d.ts +32 -0
  20. package/dist/createPageLoading.js +1 -0
  21. package/dist/data.d.cts +4 -4
  22. package/dist/data.d.ts +4 -4
  23. package/dist/index.cjs +1 -1
  24. package/dist/index.d.cts +22 -21
  25. package/dist/index.d.ts +22 -21
  26. package/dist/index.js +1 -1
  27. package/dist/index.vue.d.cts +3 -3
  28. package/dist/index.vue.d.ts +3 -3
  29. package/dist/index10.vue.d.cts +3 -3
  30. package/dist/index10.vue.d.ts +3 -3
  31. package/dist/index11.vue.d.cts +3 -3
  32. package/dist/index11.vue.d.ts +6 -6
  33. package/dist/index12.vue.d.cts +6 -6
  34. package/dist/index12.vue.d.ts +2 -2
  35. package/dist/index13.vue.d.cts +2 -2
  36. package/dist/index13.vue.d.ts +3 -3
  37. package/dist/index14.vue.d.cts +3 -3
  38. package/dist/index14.vue.d.ts +6 -6
  39. package/dist/index15.vue.d.cts +6 -6
  40. package/dist/index16.vue.d.ts +1 -1
  41. package/dist/index17.vue.d.cts +1 -1
  42. package/dist/index17.vue.d.ts +2 -2
  43. package/dist/index18.vue.d.cts +2 -2
  44. package/dist/index18.vue.d.ts +4 -4
  45. package/dist/index19.vue.d.cts +4 -4
  46. package/dist/index19.vue.d.ts +1 -1
  47. package/dist/index2.vue.d.cts +1 -1
  48. package/dist/index2.vue.d.ts +1 -1
  49. package/dist/index20.vue.d.cts +1 -1
  50. package/dist/index20.vue.d.ts +1 -1
  51. package/dist/index21.vue.d.cts +2 -2
  52. package/dist/index21.vue.d.ts +2 -2
  53. package/dist/index22.vue.d.cts +2 -2
  54. package/dist/index22.vue.d.ts +2 -2
  55. package/dist/index23.vue.d.cts +2 -2
  56. package/dist/index23.vue.d.ts +2 -2
  57. package/dist/index25.vue.d.cts +4 -4
  58. package/dist/index25.vue.d.ts +4 -4
  59. package/dist/index27.vue.d.cts +4 -4
  60. package/dist/index27.vue.d.ts +4 -4
  61. package/dist/index3.vue.d.cts +4 -4
  62. package/dist/index3.vue.d.ts +4 -4
  63. package/dist/index4.vue.d.cts +1 -1
  64. package/dist/index6.vue.d.ts +1 -1
  65. package/dist/index7.vue.d.cts +1 -1
  66. package/dist/index8.vue.d.ts +1 -1
  67. package/dist/index9.vue.d.cts +1 -1
  68. package/dist/index9.vue.d.ts +3 -3
  69. package/dist/mapUtils.d.cts +4 -4
  70. package/dist/mapUtils.d.ts +4 -4
  71. package/dist/resolver.cjs +1 -1
  72. package/dist/resolver.d.cts +1 -1
  73. package/dist/resolver.d.ts +1 -1
  74. package/dist/resolver.js +1 -1
  75. package/dist/style.css +155 -0
  76. package/dist/useCollapsePanel.d.cts +2 -2
  77. package/dist/useCollapsePanel.d.ts +2 -2
  78. package/dist/useCropperCore.d.cts +5 -5
  79. package/dist/useCropperCore.d.ts +5 -5
  80. package/dist/useDraggableLayout.d.cts +6 -6
  81. package/dist/useDraggableLayout.d.ts +6 -6
  82. package/dist/useEdgeInteraction.d.cts +3 -3
  83. package/dist/useEdgeInteraction.d.ts +3 -3
  84. package/dist/useFullscreen.d.cts +2 -2
  85. package/dist/useFullscreen.d.ts +2 -2
  86. package/dist/useQRCode.d.cts +5 -5
  87. package/dist/useQRCode.d.ts +5 -5
  88. package/dist/useSearchState.d.cts +2 -2
  89. package/dist/useSearchState.d.ts +2 -2
  90. package/dist/useSignatureHistory.d.cts +5 -5
  91. package/dist/useSignatureHistory.d.ts +5 -5
  92. package/dist/useSplitResize.d.cts +5 -5
  93. package/dist/useSplitResize.d.ts +5 -5
  94. package/dist/useTimeSelection.d.cts +3 -3
  95. package/dist/useTimeSelection.d.ts +3 -3
  96. package/dist/useWorkflowValidation.d.cts +2 -2
  97. package/dist/useWorkflowValidation.d.ts +2 -2
  98. package/dist/verification.d.cts +3 -3
  99. package/dist/verification.d.ts +3 -3
  100. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # @robot-admin/naive-ui-components
2
2
 
3
+ ## 0.13.9
4
+
5
+ - 新增 `C_PageLoading`:同心轨道与波形 SVG、柔和主题卡片,支持明暗主题、按需导入、独立文案和减少动态效果;所有样式隔离,不依赖路由或宿主的 UnoCSS。
6
+ - 新增 `createPageLoading({ delay })`:默认延迟 160ms 显示,快速完成不闪烁;任务编号隔离并发完成,提供重置清理,不强制延长导航时间。
7
+
3
8
  ## 0.13.8
4
9
 
5
10
  - 表格内置子表与主表统一默认居中;列类型保留 Naive UI 普通列的排序、筛选和单元格配置,原生表格迁移后不丢交互能力。
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  **基于 Naive UI 的 Vue 3 企业级组件库**
6
6
 
7
- 从 Robot Admin 中提炼的 54 个高质量业务组件,支持全量注册、按需导入(Tree-Shaking)和子路径独立导入。
7
+ 从 Robot Admin 中提炼的 55 个高质量业务组件,支持全量注册、按需导入(Tree-Shaking)和子路径独立导入。
8
8
 
9
9
  [![NPM Version](https://img.shields.io/npm/v/@robot-admin/naive-ui-components)](https://www.npmjs.com/package/@robot-admin/naive-ui-components)
10
10
  [![License](https://img.shields.io/npm/l/@robot-admin/naive-ui-components)](./LICENSE)
@@ -479,7 +479,7 @@ const config = defineTableConfig({
479
479
  </NSpin>
480
480
  ```
481
481
 
482
- ### 📋 组件清单(54 个)
482
+ ### 📋 组件清单(55 个)
483
483
 
484
484
  > 💡 所有组件均提供 **在线交互演示**,访问 [组件文档](https://www.tzagileteam.com/robot/components/preface) 可直接在页面中体验真实效果(通过 iframe 嵌入 Robot Admin 生产环境)。
485
485
 
@@ -489,6 +489,7 @@ const config = defineTableConfig({
489
489
  | ---------------- | ----------------------- | ----------------------------- |
490
490
  | `C_Icon` | Iconify 图标封装 | `@iconify/vue` |
491
491
  | `C_Loading` | 主题化 SVG 加载态 | - |
492
+ | `C_PageLoading` | 主题化页面切换加载 | - |
492
493
  | `C_Code` | 代码高亮显示 | `highlight.js` |
493
494
  | `C_Barcode` | 条形码生成器 | `@chenfengyuan/vue-barcode` |
494
495
  | `C_Captcha` | 拼图/ALTCHA 人机验证 | `vue3-puzzle-vcode`、`altcha` |
@@ -601,7 +602,7 @@ bun add vue naive-ui
601
602
 
602
603
  ```
603
604
  bun run build
604
- ├── 1. tsdown → 多入口打包(54 组件 ESM/CJS/DTS)
605
+ ├── 1. tsdown → 多入口打包(55 组件 ESM/CJS/DTS)
605
606
  ├── 2. sass CLI → 编译共享变量入口 → global-scss.css
606
607
  ├── 3. merge-css.js → 合并 Vue 编译后的 SFC CSS + 全局变量 → style.css
607
608
  ├── 4. gen-exports.js → 自动生成 package.json exports 映射
@@ -611,7 +612,7 @@ bun run build
611
612
 
612
613
  #### 技术要点
613
614
 
614
- - **构建引擎**:[tsdown](https://github.com/rolldown/tsdown)(基于 Rolldown),54 个独立入口并行编译
615
+ - **构建引擎**:[tsdown](https://github.com/rolldown/tsdown)(基于 Rolldown),55 个独立入口并行编译
615
616
  - **SCSS 处理**:自定义 `scssTransformPlugin` 在 Rolldown 管线内编译 SFC SCSS,独立 Sass CLI 仅编译共享变量入口
616
617
  - **CSS 合并**:构建后将 Vue 已完成 scoped 转换的 per-chunk CSS 与共享变量合并为单一 `style.css`,避免重复样式和原始 `:deep()` 选择器泄漏
617
618
  - **类型导出**:统一 `export *` barrel 模式,自动生成完整 `.d.ts`
@@ -626,7 +627,7 @@ bun run build
626
627
  ```
627
628
  dist/
628
629
  ├── index.js / index.cjs / index.d.ts # 主入口
629
- ├── C_Form.js / C_Form.cjs / C_Form.d.ts # 子路径入口(54 组件)
630
+ ├── C_Form.js / C_Form.cjs / C_Form.d.ts # 子路径入口(55 组件)
630
631
  ├── C_Form.base.css / C_Form.full.css # 基础/完整样式层级
631
632
  ├── C_Table.base.css / C_Table.full.css # 基础/完整样式层级
632
633
  ├── style.css # 合并后的全量样式
@@ -735,3 +736,19 @@ MIT License
735
736
  ### C_Login 扩展表单
736
737
 
737
738
  `password-fields` 插槽位于密码输入框下方,提供 `username`、`loading`,可配置工作空间或其他业务字段。`username-change` 在初始预填、恢复记住的账号和输入变化时同步触发。宿主通过 `submitDisabled` 阻止扩展字段尚未就绪时的按钮与回车提交;`loading` 期间凭据输入禁用。公司查询、成员关系和权限始终由宿主认证服务处理,组件不保存业务上下文。
739
+
740
+ ### 页面切换加载
741
+
742
+ 路由生命周期只需要关联 `start()` / `finish(id)`;动画、主题和减少动态效果由组件库处理。默认延迟 160ms 显示,快速切换不闪烁,旧任务完成不会关闭新任务。
743
+
744
+ ```vue
745
+ <C_PageLoading :show="loading.visible.value" />
746
+ ```
747
+
748
+ ```ts
749
+ import { createPageLoading } from '@robot-admin/naive-ui-components/C_PageLoading'
750
+ const loading = createPageLoading({ delay: 160 })
751
+ const id = loading.start()
752
+ // 路由完成、取消或失败后
753
+ loading.finish(id)
754
+ ```
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
- 54 production-ready business components extracted from Robot Admin, supporting global registration, on-demand imports (Tree-Shaking), and subpath imports.
7
+ 55 production-ready business components extracted from Robot Admin, supporting global registration, on-demand imports (Tree-Shaking), and subpath imports.
8
8
 
9
9
  [![NPM Version](https://img.shields.io/npm/v/@robot-admin/naive-ui-components)](https://www.npmjs.com/package/@robot-admin/naive-ui-components)
10
10
  [![License](https://img.shields.io/npm/l/@robot-admin/naive-ui-components)](./LICENSE)
@@ -420,7 +420,7 @@ With `require-server-verification`, a successful response must include a server
420
420
  </NSpin>
421
421
  ```
422
422
 
423
- ### 📋 Component List (54 Components)
423
+ ### 📋 Component List (55 Components)
424
424
 
425
425
  > 💡 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).
426
426
 
@@ -430,6 +430,7 @@ With `require-server-verification`, a successful response must include a server
430
430
  | ---------------- | ------------------------- | ----------------------------- |
431
431
  | `C_Icon` | Iconify icon wrapper | `@iconify/vue` |
432
432
  | `C_Loading` | Theme-aware SVG loading | - |
433
+ | `C_PageLoading` | Theme-aware page loading | - |
433
434
  | `C_Code` | Code highlighting | `highlight.js` |
434
435
  | `C_Barcode` | Barcode generator | `@chenfengyuan/vue-barcode` |
435
436
  | `C_Captcha` | Puzzle / ALTCHA captcha | `vue3-puzzle-vcode`, `altcha` |
@@ -542,7 +543,7 @@ Install optional peers per feature: `vue-router` for `C_Breadcrumb`/`C_TagsView`
542
543
 
543
544
  ```
544
545
  bun run build
545
- ├── 1. tsdown → Multi-entry bundling (54 components ESM/CJS/DTS)
546
+ ├── 1. tsdown → Multi-entry bundling (55 components ESM/CJS/DTS)
546
547
  ├── 2. sass CLI → Compile the shared-variable entry → global-scss.css
547
548
  ├── 3. merge-css.js → Merge Vue-compiled SFC CSS + global variables → style.css
548
549
  ├── 4. gen-exports.js → Auto-generate package.json exports map
@@ -552,7 +553,7 @@ bun run build
552
553
 
553
554
  #### Key Technical Details
554
555
 
555
- - **Build engine**: [tsdown](https://github.com/rolldown/tsdown) (Rolldown-based), 54 independent entries compiled in parallel
556
+ - **Build engine**: [tsdown](https://github.com/rolldown/tsdown) (Rolldown-based), 55 independent entries compiled in parallel
556
557
  - **SCSS processing**: Custom `scssTransformPlugin` compiles SFC SCSS within the Rolldown pipeline; standalone Sass CLI only compiles the shared-variable entry
557
558
  - **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
558
559
  - **Type exports**: Unified `export *` barrel pattern with auto-generated `.d.ts`
@@ -567,7 +568,7 @@ bun run build
567
568
  ```
568
569
  dist/
569
570
  ├── index.js / index.cjs / index.d.ts # Main entry
570
- ├── C_Form.js / C_Form.cjs / C_Form.d.ts # Subpath entries (54 components)
571
+ ├── C_Form.js / C_Form.cjs / C_Form.d.ts # Subpath entries (55 components)
571
572
  ├── C_Form.base.css / C_Form.full.css # Base/full style tiers
572
573
  ├── C_Table.base.css / C_Table.full.css # Base/full style tiers
573
574
  ├── style.css # Merged full styles
@@ -667,3 +668,19 @@ MIT License
667
668
  ### C_Login form extension
668
669
 
669
670
  The `password-fields` slot appears below the password field and exposes `username` and `loading`. The synchronous `username-change` event covers initial defaults, remembered usernames and input changes. Use `submitDisabled` to block clicks and Enter while application fields are incomplete. Credential inputs are disabled while `loading`. Workspace discovery and authorization remain in the host application.
671
+
672
+ ### Page navigation loading
673
+
674
+ Connect navigation lifecycles through `start()` / `finish(id)`. The component handles visuals, themes and reduced motion. A 160ms default delay avoids flashes; stale completions cannot hide a newer task.
675
+
676
+ ```vue
677
+ <C_PageLoading :show="loading.visible.value" />
678
+ ```
679
+
680
+ ```ts
681
+ import { createPageLoading } from '@robot-admin/naive-ui-components/C_PageLoading'
682
+ const loading = createPageLoading({ delay: 160 })
683
+ const id = loading.start()
684
+ // After completion, cancellation or failure
685
+ loading.finish(id)
686
+ ```
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./createPageLoading.cjs`);exports.C_PageLoading=e.n,exports.createPageLoading=e.t;
@@ -0,0 +1,152 @@
1
+ /* unplugin-vue-components disabled *//*
2
+ * @Author: ChenYu ycyplus@gmail.com
3
+ * @Date: 2026-10-07
4
+ * @Description: 页面加载的主题卡片、波形和轨道动画,所有选择器限定作用域
5
+ * Copyright (c) 2026 by CHENY, All Rights Reserved 😎.
6
+ */
7
+ .c-page-loading[data-v-aec6cc81] {
8
+ position: fixed;
9
+ inset: 0;
10
+ z-index: 1999;
11
+ display: grid;
12
+ place-items: center;
13
+ padding: 24px;
14
+ box-sizing: border-box;
15
+ background: color-mix(in srgb, var(--c-page-loading-body) 65%, transparent);
16
+ backdrop-filter: blur(3px);
17
+ pointer-events: none;
18
+ }
19
+ .c-page-loading__card[data-v-aec6cc81] {
20
+ display: flex;
21
+ flex-direction: column;
22
+ align-items: center;
23
+ gap: 10px;
24
+ width: 224px;
25
+ max-width: 100%;
26
+ padding: 26px 24px 22px;
27
+ box-sizing: border-box;
28
+ border-radius: 22px;
29
+ border: 1px solid var(--c-page-loading-border);
30
+ background: var(--c-page-loading-surface);
31
+ background-image: radial-gradient(ellipse at 50% 0, color-mix(in srgb, currentColor 6%, transparent), transparent 70%);
32
+ box-shadow: 0 16px 56px rgba(0, 0, 0, 0.1);
33
+ text-align: center;
34
+ }
35
+ .c-page-loading__glyph[data-v-aec6cc81] {
36
+ width: 76px;
37
+ height: 76px;
38
+ margin-bottom: 4px;
39
+ flex-shrink: 0;
40
+ }
41
+ .c-page-loading__outer[data-v-aec6cc81], .c-page-loading__inner[data-v-aec6cc81], .c-page-loading__pulse[data-v-aec6cc81] {
42
+ transform-box: view-box;
43
+ transform-origin: center;
44
+ }
45
+ .c-page-loading__outer[data-v-aec6cc81] {
46
+ animation: c-page-loading-orbit-aec6cc81 2s linear infinite;
47
+ }
48
+ .c-page-loading__inner[data-v-aec6cc81] {
49
+ animation: c-page-loading-orbit-aec6cc81 2.8s linear infinite reverse;
50
+ }
51
+ .c-page-loading__pulse[data-v-aec6cc81] {
52
+ animation: c-page-loading-pulse-aec6cc81 2s ease-in-out infinite alternate;
53
+ }
54
+ .c-page-loading__wave[data-v-aec6cc81] {
55
+ stroke-dasharray: 100;
56
+ animation: c-page-loading-wave-aec6cc81 2s ease-in-out infinite;
57
+ }
58
+ .c-page-loading__label[data-v-aec6cc81] {
59
+ color: var(--c-page-loading-text);
60
+ font-size: 14px;
61
+ font-weight: 600;
62
+ letter-spacing: 0.04em;
63
+ line-height: 1.6;
64
+ overflow-wrap: anywhere;
65
+ }
66
+ .c-page-loading__description[data-v-aec6cc81] {
67
+ color: var(--c-page-loading-muted);
68
+ font-size: 12px;
69
+ line-height: 1.5;
70
+ overflow-wrap: anywhere;
71
+ }
72
+ .c-page-loading__track[data-v-aec6cc81] {
73
+ width: 88px;
74
+ height: 2px;
75
+ margin-top: 8px;
76
+ overflow: hidden;
77
+ border-radius: 99px;
78
+ background: color-mix(in srgb, currentColor 10%, transparent);
79
+ }
80
+ .c-page-loading__track[data-v-aec6cc81]::after {
81
+ content: "";
82
+ display: block;
83
+ width: 50%;
84
+ height: 100%;
85
+ border-radius: inherit;
86
+ background: linear-gradient(90deg, transparent, currentColor, transparent);
87
+ animation: c-page-loading-track-aec6cc81 1.6s ease-in-out infinite;
88
+ }
89
+ .c-page-loading-fade-enter-active[data-v-aec6cc81],
90
+ .c-page-loading-fade-leave-active[data-v-aec6cc81] {
91
+ transition: opacity 0.16s ease;
92
+ }
93
+ .c-page-loading-fade-enter-from[data-v-aec6cc81],
94
+ .c-page-loading-fade-leave-to[data-v-aec6cc81] {
95
+ opacity: 0;
96
+ }
97
+ @keyframes c-page-loading-orbit-aec6cc81 {
98
+ to {
99
+ transform: rotate(360deg);
100
+ }
101
+ }
102
+ @keyframes c-page-loading-pulse-aec6cc81 {
103
+ from {
104
+ transform: scale(0.9);
105
+ }
106
+ to {
107
+ transform: scale(1.15);
108
+ }
109
+ }
110
+ @keyframes c-page-loading-wave-aec6cc81 {
111
+ 0% {
112
+ stroke-dashoffset: 100;
113
+ opacity: 0.3;
114
+ }
115
+ 45%, 65% {
116
+ stroke-dashoffset: 0;
117
+ opacity: 1;
118
+ }
119
+ 100% {
120
+ stroke-dashoffset: -100;
121
+ opacity: 0.3;
122
+ }
123
+ }
124
+ @keyframes c-page-loading-track-aec6cc81 {
125
+ from {
126
+ transform: translateX(-100%);
127
+ }
128
+ to {
129
+ transform: translateX(200%);
130
+ }
131
+ }
132
+ @media (prefers-reduced-motion: reduce) {
133
+ .c-page-loading__outer[data-v-aec6cc81],
134
+ .c-page-loading__inner[data-v-aec6cc81],
135
+ .c-page-loading__pulse[data-v-aec6cc81],
136
+ .c-page-loading__wave[data-v-aec6cc81],
137
+ .c-page-loading__track[data-v-aec6cc81]::after {
138
+ animation: none;
139
+ }
140
+ .c-page-loading__track[data-v-aec6cc81]::after {
141
+ transform: translateX(50%);
142
+ }
143
+ .c-page-loading-fade-enter-active[data-v-aec6cc81],
144
+ .c-page-loading-fade-leave-active[data-v-aec6cc81] {
145
+ transition: none;
146
+ }
147
+ }
148
+ /* unplugin-vue-components disabled */
149
+ /* layer: default */
150
+ .table[data-v-aec6cc81]{display:table;}
151
+ .filter[data-v-aec6cc81]{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia);}
152
+
@@ -0,0 +1,2 @@
1
+ import { i as PageLoadingProps, n as _default, r as PageLoadingOptions, t as createPageLoading } from "./createPageLoading.cjs";
2
+ export { _default as C_PageLoading, type PageLoadingOptions, type PageLoadingProps, createPageLoading };
@@ -0,0 +1,2 @@
1
+ import { i as PageLoadingProps, n as _default, r as PageLoadingOptions, t as createPageLoading } from "./createPageLoading.js";
2
+ export { _default as C_PageLoading, type PageLoadingOptions, type PageLoadingProps, createPageLoading };
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./createPageLoading.js";export{e as C_PageLoading,t as createPageLoading};
@@ -118,9 +118,9 @@ declare const __VLS_export: vue.DefineComponent<CronProps, {
118
118
  onChange?: ((value: string) => any) | undefined;
119
119
  "onValidation-change"?: ((result: CronValidation) => any) | undefined;
120
120
  }>, {
121
+ height: string | number;
121
122
  modelValue: string;
122
123
  disabled: boolean;
123
- height: string | number;
124
124
  showPreview: boolean;
125
125
  previewCount: number;
126
126
  showTemplates: boolean;
@@ -118,9 +118,9 @@ declare const __VLS_export: vue.DefineComponent<CronProps, {
118
118
  onChange?: ((value: string) => any) | undefined;
119
119
  "onValidation-change"?: ((result: CronValidation) => any) | undefined;
120
120
  }>, {
121
+ height: string | number;
121
122
  modelValue: string;
122
123
  disabled: boolean;
123
- height: string | number;
124
124
  showPreview: boolean;
125
125
  previewCount: number;
126
126
  showTemplates: boolean;
@@ -120,14 +120,14 @@ declare const __VLS_export: vue.DefineComponent<FormulaEditorProps, FormulaEdito
120
120
  onChange?: ((value: string) => any) | undefined;
121
121
  "onValidation-change"?: ((result: FormulaValidation) => any) | undefined;
122
122
  }>, {
123
+ height: string | number;
123
124
  modelValue: string;
124
- placeholder: string;
125
125
  disabled: boolean;
126
- height: string | number;
126
+ placeholder: string;
127
+ showPreview: boolean;
127
128
  variables: FormulaVariable[];
128
129
  functions: FormulaFunction[];
129
130
  sampleData: Record<string, number | string | boolean>;
130
- showPreview: boolean;
131
131
  showKeyboard: boolean;
132
132
  showVariablePanel: boolean;
133
133
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -120,14 +120,14 @@ declare const __VLS_export: vue.DefineComponent<FormulaEditorProps, FormulaEdito
120
120
  onChange?: ((value: string) => any) | undefined;
121
121
  "onValidation-change"?: ((result: FormulaValidation) => any) | undefined;
122
122
  }>, {
123
+ height: string | number;
123
124
  modelValue: string;
124
- placeholder: string;
125
125
  disabled: boolean;
126
- height: string | number;
126
+ placeholder: string;
127
+ showPreview: boolean;
127
128
  variables: FormulaVariable[];
128
129
  functions: FormulaFunction[];
129
130
  sampleData: Record<string, number | string | boolean>;
130
- showPreview: boolean;
131
131
  showKeyboard: boolean;
132
132
  showVariablePanel: boolean;
133
133
  }, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
@@ -196,31 +196,31 @@ type __VLS_Slots = {} & {
196
196
  area?: (props: typeof __VLS_11) => any;
197
197
  };
198
198
  declare const __VLS_base: vue.DefineComponent<UploadProps, UploadExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
199
- error: (file: UploadFileItem, error: Error) => any;
200
199
  change: (fileList: UploadFileItem[]) => any;
201
- progress: (file: UploadFileItem, percent: number) => any;
200
+ error: (file: UploadFileItem, error: Error) => any;
202
201
  success: (file: UploadFileItem, response: unknown) => any;
202
+ progress: (file: UploadFileItem, percent: number) => any;
203
203
  remove: (file: UploadFileItem) => any;
204
204
  finish: (fileList: UploadFileItem[]) => any;
205
205
  exceed: (files: File[], fileList: UploadFileItem[]) => any;
206
206
  }, string, vue.PublicProps, Readonly<UploadProps> & Readonly<{
207
- onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
208
207
  onChange?: ((fileList: UploadFileItem[]) => any) | undefined;
209
- onProgress?: ((file: UploadFileItem, percent: number) => any) | undefined;
208
+ onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
210
209
  onSuccess?: ((file: UploadFileItem, response: unknown) => any) | undefined;
210
+ onProgress?: ((file: UploadFileItem, percent: number) => any) | undefined;
211
211
  onRemove?: ((file: UploadFileItem) => any) | undefined;
212
212
  onFinish?: ((fileList: UploadFileItem[]) => any) | undefined;
213
213
  onExceed?: ((files: File[], fileList: UploadFileItem[]) => any) | undefined;
214
214
  }>, {
215
- disabled: boolean;
216
215
  data: Record<string, unknown>;
216
+ maxSize: number;
217
+ disabled: boolean;
217
218
  draggable: boolean;
218
219
  multiple: boolean;
219
220
  action: string;
220
221
  headers: Record<string, string>;
221
222
  directory: boolean;
222
223
  accept: string;
223
- maxSize: number;
224
224
  maxCount: number;
225
225
  pasteable: boolean;
226
226
  chunked: boolean;
@@ -196,31 +196,31 @@ type __VLS_Slots = {} & {
196
196
  area?: (props: typeof __VLS_11) => any;
197
197
  };
198
198
  declare const __VLS_base: vue.DefineComponent<UploadProps, UploadExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
199
- error: (file: UploadFileItem, error: Error) => any;
200
199
  change: (fileList: UploadFileItem[]) => any;
201
- progress: (file: UploadFileItem, percent: number) => any;
200
+ error: (file: UploadFileItem, error: Error) => any;
202
201
  success: (file: UploadFileItem, response: unknown) => any;
202
+ progress: (file: UploadFileItem, percent: number) => any;
203
203
  remove: (file: UploadFileItem) => any;
204
204
  finish: (fileList: UploadFileItem[]) => any;
205
205
  exceed: (files: File[], fileList: UploadFileItem[]) => any;
206
206
  }, string, vue.PublicProps, Readonly<UploadProps> & Readonly<{
207
- onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
208
207
  onChange?: ((fileList: UploadFileItem[]) => any) | undefined;
209
- onProgress?: ((file: UploadFileItem, percent: number) => any) | undefined;
208
+ onError?: ((file: UploadFileItem, error: Error) => any) | undefined;
210
209
  onSuccess?: ((file: UploadFileItem, response: unknown) => any) | undefined;
210
+ onProgress?: ((file: UploadFileItem, percent: number) => any) | undefined;
211
211
  onRemove?: ((file: UploadFileItem) => any) | undefined;
212
212
  onFinish?: ((fileList: UploadFileItem[]) => any) | undefined;
213
213
  onExceed?: ((files: File[], fileList: UploadFileItem[]) => any) | undefined;
214
214
  }>, {
215
- disabled: boolean;
216
215
  data: Record<string, unknown>;
216
+ maxSize: number;
217
+ disabled: boolean;
217
218
  draggable: boolean;
218
219
  multiple: boolean;
219
220
  action: string;
220
221
  headers: Record<string, string>;
221
222
  directory: boolean;
222
223
  accept: string;
223
- maxSize: number;
224
224
  maxCount: number;
225
225
  pasteable: boolean;
226
226
  chunked: boolean;
@@ -258,11 +258,11 @@ type PlayerInstance = InstanceType<typeof xgplayer.default>;
258
258
  //#endregion
259
259
  //#region src/components/C_VideoPlayer/index.vue.d.ts
260
260
  declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
261
- error: (error: Error) => any;
262
261
  ready: () => any;
262
+ error: (error: Error) => any;
263
+ ended: () => any;
263
264
  stateChange: (state: PlayerState) => any;
264
265
  timeUpdate: (currentTime: number, duration: number) => any;
265
- ended: () => any;
266
266
  qualityChange: (quality: QualityLevel) => any;
267
267
  rateChange: (rate: number) => any;
268
268
  fullscreenChange: (isFullscreen: boolean) => any;
@@ -271,11 +271,11 @@ declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExp
271
271
  chapterChange: (chapter: Chapter) => any;
272
272
  progressUpdate: (data: ProgressData) => any;
273
273
  }, string, vue.PublicProps, Readonly<VideoPlayerProps> & Readonly<{
274
- onError?: ((error: Error) => any) | undefined;
275
274
  onReady?: (() => any) | undefined;
275
+ onError?: ((error: Error) => any) | undefined;
276
+ onEnded?: (() => any) | undefined;
276
277
  onStateChange?: ((state: PlayerState) => any) | undefined;
277
278
  onTimeUpdate?: ((currentTime: number, duration: number) => any) | undefined;
278
- onEnded?: (() => any) | undefined;
279
279
  onQualityChange?: ((quality: QualityLevel) => any) | undefined;
280
280
  onRateChange?: ((rate: number) => any) | undefined;
281
281
  onFullscreenChange?: ((isFullscreen: boolean) => any) | undefined;
@@ -258,11 +258,11 @@ type PlayerInstance = InstanceType<typeof xgplayer.default>;
258
258
  //#endregion
259
259
  //#region src/components/C_VideoPlayer/index.vue.d.ts
260
260
  declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExpose, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {
261
- error: (error: Error) => any;
262
261
  ready: () => any;
262
+ error: (error: Error) => any;
263
+ ended: () => any;
263
264
  stateChange: (state: PlayerState) => any;
264
265
  timeUpdate: (currentTime: number, duration: number) => any;
265
- ended: () => any;
266
266
  qualityChange: (quality: QualityLevel) => any;
267
267
  rateChange: (rate: number) => any;
268
268
  fullscreenChange: (isFullscreen: boolean) => any;
@@ -271,11 +271,11 @@ declare const __VLS_export: vue.DefineComponent<VideoPlayerProps, VideoPlayerExp
271
271
  chapterChange: (chapter: Chapter) => any;
272
272
  progressUpdate: (data: ProgressData) => any;
273
273
  }, string, vue.PublicProps, Readonly<VideoPlayerProps> & Readonly<{
274
- onError?: ((error: Error) => any) | undefined;
275
274
  onReady?: (() => any) | undefined;
275
+ onError?: ((error: Error) => any) | undefined;
276
+ onEnded?: (() => any) | undefined;
276
277
  onStateChange?: ((state: PlayerState) => any) | undefined;
277
278
  onTimeUpdate?: ((currentTime: number, duration: number) => any) | undefined;
278
- onEnded?: (() => any) | undefined;
279
279
  onQualityChange?: ((quality: QualityLevel) => any) | undefined;
280
280
  onRateChange?: ((rate: number) => any) | undefined;
281
281
  onFullscreenChange?: ((isFullscreen: boolean) => any) | undefined;
@@ -0,0 +1 @@
1
+ require(`./chunk.cjs`);const e=require(`./config.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i={class:`c-page-loading__card`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`},a={class:`c-page-loading__label`},o={key:0,class:`c-page-loading__description`},s=(0,n.defineComponent)({name:`C_PageLoading`,__name:`index`,props:{show:{type:Boolean},label:{},description:{},color:{}},setup(t){let s=(0,r.useThemeVars)(),{t:c}=e.i();return(e,r)=>((0,n.openBlock)(),(0,n.createBlock)(n.Teleport,{to:`body`},[(0,n.createVNode)(n.Transition,{name:`c-page-loading-fade`},{default:(0,n.withCtx)(()=>[t.show?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:0,class:`c-page-loading`,style:(0,n.normalizeStyle)({"--c-page-loading-surface":(0,n.unref)(s).cardColor,"--c-page-loading-body":(0,n.unref)(s).bodyColor,"--c-page-loading-border":(0,n.unref)(s).dividerColor,"--c-page-loading-text":(0,n.unref)(s).textColor1,"--c-page-loading-muted":(0,n.unref)(s).textColor3,color:t.color||(0,n.unref)(s).primaryColor})},[(0,n.createElementVNode)(`div`,i,[r[0]||=(0,n.createElementVNode)(`svg`,{class:`c-page-loading__glyph`,viewBox:`0 0 80 80`,fill:`none`,"aria-hidden":`true`,focusable:`false`},[(0,n.createElementVNode)(`circle`,{cx:`40`,cy:`40`,r:`35`,stroke:`currentColor`,"stroke-opacity":`.08`}),(0,n.createElementVNode)(`circle`,{class:`c-page-loading__outer`,cx:`40`,cy:`40`,r:`35`,stroke:`currentColor`,"stroke-opacity":`.38`,"stroke-width":`2`,"stroke-dasharray":`64 156`,"stroke-linecap":`round`}),(0,n.createElementVNode)(`circle`,{class:`c-page-loading__inner`,cx:`40`,cy:`40`,r:`24`,stroke:`currentColor`,"stroke-opacity":`.24`,"stroke-width":`1.5`,"stroke-dasharray":`34 117`,"stroke-linecap":`round`}),(0,n.createElementVNode)(`circle`,{class:`c-page-loading__pulse`,cx:`40`,cy:`40`,r:`17`,fill:`currentColor`,"fill-opacity":`.06`}),(0,n.createElementVNode)(`path`,{class:`c-page-loading__wave`,d:`M11 40 Q20.5 27 30 40 Q39.5 53 49 40 Q58.5 27 68 40`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`}),(0,n.createElementVNode)(`circle`,{cx:`40`,cy:`40`,r:`3`,fill:`currentColor`})],-1),(0,n.createElementVNode)(`span`,a,(0,n.toDisplayString)(t.label||(0,n.unref)(c)(`common.loading`)),1),t.description?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,o,(0,n.toDisplayString)(t.description),1)):(0,n.createCommentVNode)(`v-if`,!0),r[1]||=(0,n.createElementVNode)(`span`,{class:`c-page-loading__track`,"aria-hidden":`true`},null,-1)])],4)):(0,n.createCommentVNode)(`v-if`,!0)]),_:1})]))}});var c=t.t(s,[[`__scopeId`,`data-v-aec6cc81`]]);function l(e={}){let t=(0,n.ref)(!1),r=e.delay??160,i=Number.isFinite(r)?Math.max(0,r):160,a=0,o,s=()=>{o!==void 0&&clearTimeout(o),o=void 0};return{visible:(0,n.readonly)(t),start:()=>{s();let e=++a;return t.value||(o=setTimeout(()=>{o=void 0,e===a&&(t.value=!0)},i)),e},finish:e=>{e===a&&(s(),t.value=!1)},reset:()=>{a++,s(),t.value=!1}}}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return l}});
@@ -0,0 +1,32 @@
1
+ import * as vue from "vue";
2
+
3
+ //#region src/components/C_PageLoading/types.d.ts
4
+ interface PageLoadingProps {
5
+ /** 是否显示;路由生命周期由接入项目控制。 */
6
+ show: boolean;
7
+ /** 默认使用组件库的加载文案。 */
8
+ label?: string;
9
+ /** 可选说明,例如目标页面名称。 */
10
+ description?: string;
11
+ /** 默认使用 Naive UI 主色。 */
12
+ color?: string;
13
+ }
14
+ interface PageLoadingOptions {
15
+ /** 延迟显示的毫秒数,默认 160;完成速度快时不显示遮罩。 */
16
+ delay?: number;
17
+ }
18
+ //#endregion
19
+ //#region src/components/C_PageLoading/index.vue.d.ts
20
+ declare const __VLS_export: vue.DefineComponent<PageLoadingProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<PageLoadingProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
21
+ declare const _default: typeof __VLS_export;
22
+ //#endregion
23
+ //#region src/components/C_PageLoading/createPageLoading.d.ts
24
+ /** 创建独立状态;不依赖路由、Store、DOM 或项目配置。 */
25
+ declare function createPageLoading(options?: PageLoadingOptions): {
26
+ visible: Readonly<vue.Ref<boolean, boolean>>;
27
+ start: () => number;
28
+ finish: (id: number) => void;
29
+ reset: () => void;
30
+ };
31
+ //#endregion
32
+ export { PageLoadingProps as i, _default as n, PageLoadingOptions as r, createPageLoading as t };
@@ -0,0 +1,32 @@
1
+ import * as vue from "vue";
2
+
3
+ //#region src/components/C_PageLoading/types.d.ts
4
+ interface PageLoadingProps {
5
+ /** 是否显示;路由生命周期由接入项目控制。 */
6
+ show: boolean;
7
+ /** 默认使用组件库的加载文案。 */
8
+ label?: string;
9
+ /** 可选说明,例如目标页面名称。 */
10
+ description?: string;
11
+ /** 默认使用 Naive UI 主色。 */
12
+ color?: string;
13
+ }
14
+ interface PageLoadingOptions {
15
+ /** 延迟显示的毫秒数,默认 160;完成速度快时不显示遮罩。 */
16
+ delay?: number;
17
+ }
18
+ //#endregion
19
+ //#region src/components/C_PageLoading/index.vue.d.ts
20
+ declare const __VLS_export: vue.DefineComponent<PageLoadingProps, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<PageLoadingProps> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
21
+ declare const _default: typeof __VLS_export;
22
+ //#endregion
23
+ //#region src/components/C_PageLoading/createPageLoading.d.ts
24
+ /** 创建独立状态;不依赖路由、Store、DOM 或项目配置。 */
25
+ declare function createPageLoading(options?: PageLoadingOptions): {
26
+ visible: Readonly<vue.Ref<boolean, boolean>>;
27
+ start: () => number;
28
+ finish: (id: number) => void;
29
+ reset: () => void;
30
+ };
31
+ //#endregion
32
+ export { PageLoadingProps as i, _default as n, PageLoadingOptions as r, createPageLoading as t };
@@ -0,0 +1 @@
1
+ import{i as e}from"./config.js";import{t}from"./export-helper.js";import{Teleport as n,Transition as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createVNode as c,defineComponent as l,normalizeStyle as u,openBlock as d,readonly as f,ref as p,toDisplayString as m,unref as h,withCtx as g}from"vue";import{useThemeVars as _}from"naive-ui";const v={class:`c-page-loading__card`,role:`status`,"aria-live":`polite`,"aria-atomic":`true`},y={class:`c-page-loading__label`},b={key:0,class:`c-page-loading__description`};var x=t(l({name:`C_PageLoading`,__name:`index`,props:{show:{type:Boolean},label:{},description:{},color:{}},setup(t){let l=_(),{t:f}=e();return(e,p)=>(d(),i(n,{to:`body`},[c(r,{name:`c-page-loading-fade`},{default:g(()=>[t.show?(d(),o(`div`,{key:0,class:`c-page-loading`,style:u({"--c-page-loading-surface":h(l).cardColor,"--c-page-loading-body":h(l).bodyColor,"--c-page-loading-border":h(l).dividerColor,"--c-page-loading-text":h(l).textColor1,"--c-page-loading-muted":h(l).textColor3,color:t.color||h(l).primaryColor})},[s(`div`,v,[p[0]||=s(`svg`,{class:`c-page-loading__glyph`,viewBox:`0 0 80 80`,fill:`none`,"aria-hidden":`true`,focusable:`false`},[s(`circle`,{cx:`40`,cy:`40`,r:`35`,stroke:`currentColor`,"stroke-opacity":`.08`}),s(`circle`,{class:`c-page-loading__outer`,cx:`40`,cy:`40`,r:`35`,stroke:`currentColor`,"stroke-opacity":`.38`,"stroke-width":`2`,"stroke-dasharray":`64 156`,"stroke-linecap":`round`}),s(`circle`,{class:`c-page-loading__inner`,cx:`40`,cy:`40`,r:`24`,stroke:`currentColor`,"stroke-opacity":`.24`,"stroke-width":`1.5`,"stroke-dasharray":`34 117`,"stroke-linecap":`round`}),s(`circle`,{class:`c-page-loading__pulse`,cx:`40`,cy:`40`,r:`17`,fill:`currentColor`,"fill-opacity":`.06`}),s(`path`,{class:`c-page-loading__wave`,d:`M11 40 Q20.5 27 30 40 Q39.5 53 49 40 Q58.5 27 68 40`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`}),s(`circle`,{cx:`40`,cy:`40`,r:`3`,fill:`currentColor`})],-1),s(`span`,y,m(t.label||h(f)(`common.loading`)),1),t.description?(d(),o(`span`,b,m(t.description),1)):a(`v-if`,!0),p[1]||=s(`span`,{class:`c-page-loading__track`,"aria-hidden":`true`},null,-1)])],4)):a(`v-if`,!0)]),_:1})]))}}),[[`__scopeId`,`data-v-aec6cc81`]]);function S(e={}){let t=p(!1),n=e.delay??160,r=Number.isFinite(n)?Math.max(0,n):160,i=0,a,o=()=>{a!==void 0&&clearTimeout(a),a=void 0};return{visible:f(t),start:()=>{o();let e=++i;return t.value||(a=setTimeout(()=>{a=void 0,e===i&&(t.value=!0)},r)),e},finish:e=>{e===i&&(o(),t.value=!1)},reset:()=>{i++,o(),t.value=!1}}}export{x as n,S as t};
package/dist/data.d.cts CHANGED
@@ -67,24 +67,24 @@ declare const __VLS_base: vue.DefineComponent<CTabsProps, {
67
67
  }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {} & {
68
68
  add: () => any;
69
69
  "update:modelValue": (value: TabsValue) => any;
70
- close: (value: TabsValue) => any;
71
70
  change: (value: TabsValue, item: TabsItem | undefined) => any;
71
+ close: (value: TabsValue) => any;
72
72
  }, string, vue.PublicProps, Readonly<CTabsProps> & Readonly<{
73
73
  onAdd?: (() => any) | undefined;
74
74
  "onUpdate:modelValue"?: ((value: TabsValue) => any) | undefined;
75
- onClose?: ((value: TabsValue) => any) | undefined;
76
75
  onChange?: ((value: TabsValue, item: TabsItem | undefined) => any) | undefined;
76
+ onClose?: ((value: TabsValue) => any) | undefined;
77
77
  }>, {
78
- modelValue: TabsValue | null;
79
78
  size: TabsSize;
80
79
  type: TabsType;
80
+ modelValue: TabsValue | null;
81
81
  items: readonly TabsItem[];
82
82
  closable: boolean;
83
83
  addable: boolean;
84
+ defaultValue: TabsValue | null;
84
85
  placement: TabsPlacement;
85
86
  displayDirective: TabsDisplayDirective;
86
87
  animated: boolean;
87
- defaultValue: TabsValue | null;
88
88
  justifyContent: TabsJustifyContent;
89
89
  tabsOnly: boolean;
90
90
  paneClass: string;