x-next 1.12.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/AI_CODING.md +6 -5
  2. package/AI_USAGE/catalog.md +106 -105
  3. package/AI_USAGE/components/alert-api.md +48 -0
  4. package/AI_USAGE/components/alert.md +222 -3
  5. package/AI_USAGE/components/bar-chart-api.md +177 -0
  6. package/AI_USAGE/components/bar-chart.md +297 -3
  7. package/AI_USAGE/components/boxicons.md +147 -0
  8. package/AI_USAGE/components/button-api.md +144 -0
  9. package/AI_USAGE/components/button.md +447 -3
  10. package/AI_USAGE/components/charts.md +81 -0
  11. package/AI_USAGE/components/checkbox-api.md +145 -0
  12. package/AI_USAGE/components/checkbox.md +365 -3
  13. package/AI_USAGE/components/color-picker-api.md +52 -0
  14. package/AI_USAGE/components/color-picker.md +211 -3
  15. package/AI_USAGE/components/config-provider-api.md +38 -0
  16. package/AI_USAGE/components/config-provider.md +250 -3
  17. package/AI_USAGE/components/date-picker-api.md +1114 -0
  18. package/AI_USAGE/components/date-picker.md +378 -3
  19. package/AI_USAGE/components/dialog-api.md +142 -0
  20. package/AI_USAGE/components/dialog.md +284 -3
  21. package/AI_USAGE/components/draggable-api.md +146 -0
  22. package/AI_USAGE/components/draggable.md +259 -0
  23. package/AI_USAGE/components/drawer-api.md +78 -0
  24. package/AI_USAGE/components/drawer.md +227 -0
  25. package/AI_USAGE/components/dropdown-api.md +529 -0
  26. package/AI_USAGE/components/dropdown.md +392 -3
  27. package/AI_USAGE/components/empty-api.md +36 -0
  28. package/AI_USAGE/components/empty.md +227 -3
  29. package/AI_USAGE/components/finicon.md +88 -0
  30. package/AI_USAGE/components/form-api.md +524 -0
  31. package/AI_USAGE/components/form.md +454 -0
  32. package/AI_USAGE/components/grid-api.md +527 -0
  33. package/AI_USAGE/components/grid.md +224 -0
  34. package/AI_USAGE/components/heatmap-api.md +122 -0
  35. package/AI_USAGE/components/heatmap.md +220 -0
  36. package/AI_USAGE/components/icon-api.md +4707 -0
  37. package/AI_USAGE/components/icon.md +257 -0
  38. package/AI_USAGE/components/image-api.md +440 -0
  39. package/AI_USAGE/components/image.md +465 -0
  40. package/AI_USAGE/components/input-api.md +184 -0
  41. package/AI_USAGE/components/input-number-api.md +66 -0
  42. package/AI_USAGE/components/input-number.md +294 -0
  43. package/AI_USAGE/components/input-tag-api.md +114 -0
  44. package/AI_USAGE/components/input-tag.md +482 -0
  45. package/AI_USAGE/components/input.md +293 -3
  46. package/AI_USAGE/components/layout-api.md +147 -0
  47. package/AI_USAGE/components/layout.md +230 -0
  48. package/AI_USAGE/components/line-chart-api.md +197 -0
  49. package/AI_USAGE/components/line-chart.md +279 -3
  50. package/AI_USAGE/components/link-api.md +42 -0
  51. package/AI_USAGE/components/link.md +197 -0
  52. package/AI_USAGE/components/menu-api.md +516 -0
  53. package/AI_USAGE/components/menu.md +268 -0
  54. package/AI_USAGE/components/message-api.md +215 -0
  55. package/AI_USAGE/components/message-box-api.md +108 -0
  56. package/AI_USAGE/components/message-box.md +268 -3
  57. package/AI_USAGE/components/message.md +231 -3
  58. package/AI_USAGE/components/network-api.md +91 -0
  59. package/AI_USAGE/components/network.md +378 -0
  60. package/AI_USAGE/components/notification-api.md +236 -0
  61. package/AI_USAGE/components/notification.md +275 -3
  62. package/AI_USAGE/components/pagination-api.md +62 -0
  63. package/AI_USAGE/components/pagination.md +386 -5
  64. package/AI_USAGE/components/pie-chart-api.md +109 -0
  65. package/AI_USAGE/components/pie-chart.md +245 -3
  66. package/AI_USAGE/components/popconfirm-api.md +75 -0
  67. package/AI_USAGE/components/popconfirm.md +231 -3
  68. package/AI_USAGE/components/popover-api.md +75 -0
  69. package/AI_USAGE/components/popover.md +208 -3
  70. package/AI_USAGE/components/popup-api.md +75 -0
  71. package/AI_USAGE/components/popup.md +52 -0
  72. package/AI_USAGE/components/progress-api.md +44 -0
  73. package/AI_USAGE/components/progress.md +248 -3
  74. package/AI_USAGE/components/radio-api.md +165 -0
  75. package/AI_USAGE/components/radio.md +259 -3
  76. package/AI_USAGE/components/rate-api.md +54 -0
  77. package/AI_USAGE/components/rate.md +233 -3
  78. package/AI_USAGE/components/resize-box-api.md +56 -0
  79. package/AI_USAGE/components/resize-box.md +231 -0
  80. package/AI_USAGE/components/scrollbar-api.md +77 -0
  81. package/AI_USAGE/components/scrollbar.md +218 -0
  82. package/AI_USAGE/components/select-api.md +758 -0
  83. package/AI_USAGE/components/select.md +640 -3
  84. package/AI_USAGE/components/skeleton-api.md +85 -0
  85. package/AI_USAGE/components/skeleton.md +150 -0
  86. package/AI_USAGE/components/slider-api.md +51 -0
  87. package/AI_USAGE/components/slider.md +233 -3
  88. package/AI_USAGE/components/space-api.md +38 -0
  89. package/AI_USAGE/components/space.md +145 -0
  90. package/AI_USAGE/components/spin-api.md +43 -0
  91. package/AI_USAGE/components/spin.md +205 -0
  92. package/AI_USAGE/components/steps-api.md +111 -0
  93. package/AI_USAGE/components/steps.md +201 -3
  94. package/AI_USAGE/components/switch-api.md +58 -0
  95. package/AI_USAGE/components/switch.md +290 -3
  96. package/AI_USAGE/components/table-api.md +2919 -0
  97. package/AI_USAGE/components/table.md +1414 -0
  98. package/AI_USAGE/components/tabs-api.md +135 -0
  99. package/AI_USAGE/components/tabs.md +308 -3
  100. package/AI_USAGE/components/tag-api.md +124 -0
  101. package/AI_USAGE/components/tag.md +292 -0
  102. package/AI_USAGE/components/textarea-api.md +55 -0
  103. package/AI_USAGE/components/textarea.md +326 -3
  104. package/AI_USAGE/components/time-picker-api.md +137 -0
  105. package/AI_USAGE/components/time-picker.md +271 -3
  106. package/AI_USAGE/components/time-range-selector-api.md +44 -0
  107. package/AI_USAGE/components/time-range-selector.md +355 -0
  108. package/AI_USAGE/components/timeline-api.md +93 -0
  109. package/AI_USAGE/components/timeline.md +312 -0
  110. package/AI_USAGE/components/tooltip-api.md +77 -0
  111. package/AI_USAGE/components/tooltip.md +182 -0
  112. package/AI_USAGE/components/trend-chart-api.md +119 -0
  113. package/AI_USAGE/components/trend-chart.md +335 -0
  114. package/AI_USAGE/components/trigger-api.md +124 -0
  115. package/AI_USAGE/components/trigger.md +185 -0
  116. package/AI_USAGE/components/upload-api.md +200 -0
  117. package/AI_USAGE/components/upload.md +711 -3
  118. package/AI_USAGE/components/watermark-api.md +87 -0
  119. package/AI_USAGE/components/watermark.md +200 -0
  120. package/AI_USAGE/core.md +1 -1
  121. package/AI_USAGE/index.md +35 -7
  122. package/AI_USAGE/recipes/form-on-demand.md +1 -1
  123. package/AI_USAGE.md +33657 -7
  124. package/CHANGELOG.md +40 -0
  125. package/dist/_utils/inherit-component-type.d.ts +11 -0
  126. package/dist/components/date-picker/index.d.ts +420 -5
  127. package/dist/components/form-input/index.d.ts +617 -2
  128. package/dist/components/layout/index.d.ts +689 -1
  129. package/dist/components/menu/index.d.ts +786 -1
  130. package/dist/components/network/Network.vue.d.ts +7 -3
  131. package/dist/components/network/index.d.ts +10 -2
  132. package/dist/components/network/props.d.ts +5 -0
  133. package/dist/components/network/utils.d.ts +3 -3
  134. package/dist/components/pagination/page-item-ellipsis.vue.d.ts +4 -1
  135. package/dist/components/pagination/page-item-step.vue.d.ts +101 -130
  136. package/dist/components/pagination/page-item.vue.d.ts +1 -0
  137. package/dist/components/pagination/page-jumper.vue.d.ts +1 -1
  138. package/dist/components/pagination/page-options.vue.d.ts +6 -4
  139. package/dist/components/pagination/utils.d.ts +3 -0
  140. package/dist/components/time-range-selector/index.d.ts +6 -6
  141. package/dist/es/_container/resize-observer-v2.js +1 -1
  142. package/dist/es/_container/resize-observer.js +1 -1
  143. package/dist/es/_hooks/use-resize-observer.js +1 -1
  144. package/dist/es/_styles/palette-aliases.js +4 -4
  145. package/dist/es/_utils/inherit-component-type.js +6 -0
  146. package/dist/es/_virtual/advancedFormat.js +1 -1
  147. package/dist/es/_virtual/customParseFormat.js +1 -1
  148. package/dist/es/_virtual/dayjs.min.js +1 -1
  149. package/dist/es/_virtual/isBetween.js +1 -1
  150. package/dist/es/_virtual/quarterOfYear.js +1 -1
  151. package/dist/es/_virtual/weekOfYear.js +1 -1
  152. package/dist/es/_virtual/weekYear.js +1 -1
  153. package/dist/es/_virtual/zh-cn.js +1 -1
  154. package/dist/es/components/button/Button.js +53 -42
  155. package/dist/es/components/date-picker/index.js +18 -17
  156. package/dist/es/components/draggable/useDraggable.js +1 -1
  157. package/dist/es/components/form/Form.vue2.js +1 -1
  158. package/dist/es/components/form/FormItem.vue2.js +1 -1
  159. package/dist/es/components/form-input/index.js +12 -11
  160. package/dist/es/components/form-input-number/InputNumber.js +1 -1
  161. package/dist/es/components/form-slider/Slider.vue2.js +1 -1
  162. package/dist/es/components/form-slider/slider-ticks.vue2.js +1 -1
  163. package/dist/es/components/form-slider/utils.js +1 -1
  164. package/dist/es/components/layout/index.js +10 -9
  165. package/dist/es/components/menu/MenuItem.js +1 -1
  166. package/dist/es/components/menu/hooks/use-level.js +5 -5
  167. package/dist/es/components/menu/index.js +13 -10
  168. package/dist/es/components/menu/overflow-wrap.js +1 -1
  169. package/dist/es/components/network/Network.vue.js +17 -12
  170. package/dist/es/components/network/Network.vue2.js +78 -70
  171. package/dist/es/components/network/utils.js +112 -71
  172. package/dist/es/components/pagination/Pagination.js +132 -123
  173. package/dist/es/components/pagination/page-item-ellipsis.vue.js +10 -10
  174. package/dist/es/components/pagination/page-item-ellipsis.vue2.js +24 -19
  175. package/dist/es/components/pagination/page-item-step.vue.js +14 -11
  176. package/dist/es/components/pagination/page-item-step.vue2.js +20 -22
  177. package/dist/es/components/pagination/page-item.vue.js +10 -9
  178. package/dist/es/components/pagination/page-item.vue2.js +24 -19
  179. package/dist/es/components/pagination/page-jumper.vue2.js +23 -23
  180. package/dist/es/components/pagination/page-options.vue.js +15 -10
  181. package/dist/es/components/pagination/page-options.vue2.js +21 -17
  182. package/dist/es/components/pagination/utils.js +4 -2
  183. package/dist/es/components/progress/circle.vue2.js +1 -1
  184. package/dist/es/components/progress/line.vue2.js +1 -1
  185. package/dist/es/components/progress/steps.vue2.js +1 -1
  186. package/dist/es/components/rate/Rate.js +1 -1
  187. package/dist/es/components/virtual-list-v2/virtual-list-item.js +1 -1
  188. package/dist/es/locale/en-US.js +2 -0
  189. package/dist/es/locale/zh-CN.js +2 -0
  190. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/dayjs.min.js +1 -1
  191. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/locale/zh-cn.js +1 -1
  192. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/advancedFormat.js +1 -1
  193. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/customParseFormat.js +1 -1
  194. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/isBetween.js +1 -1
  195. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/quarterOfYear.js +1 -1
  196. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/weekOfYear.js +1 -1
  197. package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/dayjs@1.11.21/node_modules/dayjs/plugin/weekYear.js +1 -1
  198. package/dist/es/style.css +1 -1
  199. package/dist/index.cjs +3 -3
  200. package/dist/index.umd.js +3 -3
  201. package/dist/locale/interface.d.ts +3 -0
  202. package/dist/style/base.css +1 -1
  203. package/dist/style/button.css +1 -1
  204. package/dist/style/form-select.css +1 -1
  205. package/dist/style/network.css +1 -1
  206. package/dist/style/pagination.css +1 -1
  207. package/dist/style/table.css +1 -1
  208. package/dist/style.css +1 -1
  209. package/package.json +10 -5
  210. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/index.js +0 -0
  211. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/is.js +0 -0
  212. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/locale/en-US.js +0 -0
  213. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/array.js +0 -0
  214. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/base.js +0 -0
  215. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/boolean.js +0 -0
  216. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/custom.js +0 -0
  217. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/number.js +0 -0
  218. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/object.js +0 -0
  219. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/string.js +0 -0
  220. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/rules/type.js +0 -0
  221. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/b-validate@1.5.3/node_modules/b-validate/es/util.js +0 -0
  222. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/compute-scroll-into-view@3.1.1/node_modules/compute-scroll-into-view/dist/index.js +0 -0
  223. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/number-precision@1.6.0/node_modules/number-precision/build/index.es.js +0 -0
  224. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/resize-observer-polyfill@1.5.1/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +0 -0
  225. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/scroll-into-view-if-needed@3.1.0/node_modules/scroll-into-view-if-needed/dist/index.js +0 -0
  226. /package/dist/es/{Users/xuyu/Code/x-next/node_modules → node_modules}/.pnpm/sortablejs@1.15.7/node_modules/sortablejs/modular/sortable.esm.js +0 -0
@@ -0,0 +1,200 @@
1
+ <!-- Generated by pnpm generate:ai-usage. Edit script/ai-usage/content.md and script/ai-usage/. -->
2
+ # Upload 完整公开 API
3
+
4
+ 适用版本:x-next@1.14.0;来源指纹:`014984639d816a2c7e25eb22690c586b0b2e8efba6846bec8a4e424db41a09e9`。
5
+
6
+ 从同版本构建的公开声明、运行时 props/emits 和显式 expose 生成。运行时导入始终使用 `x-next`,声明路径仅作定位。插槽类型未细化时,具体槽名与作用域见本地用法示例。
7
+
8
+ ## Upload API
9
+
10
+ 公开声明:`dist/components/upload/index.d.ts`。 类型中的 undefined 表示可省略;原始 prop 默认值不等于继承配置或服务默认值。
11
+
12
+ ### Props
13
+
14
+ | 名称 | 用途 | 公开类型 | 必填 | 声明默认值 |
15
+ | --- | --- | --- | --- | --- |
16
+ | fileList | 文件列表,支持 v-model:file-list | undefined &#124; UploadFile<unknown>[] | 否 | undefined |
17
+ | defaultFileList | 非受控模式下的初始文件列表 | undefined &#124; UploadFile<unknown>[] | 否 | [] |
18
+ | action | 上传地址,传函数时按文件动态解析并支持异步 | undefined &#124; string &#124; (file: File) => string &#124; Promise<string> | 否 | undefined |
19
+ | method | 请求方法 | undefined &#124; "post" &#124; "put" &#124; "patch" | 否 | "post" |
20
+ | headers | 请求头 | undefined &#124; { [x: string]: string; } | 否 | undefined |
21
+ | data | 附加表单字段,可传函数按文件解析 | undefined &#124; { [x: string]: unknown; } &#124; (file: UploadFile) => Record<string, unknown> &#124; Promise<Record<string, unknown>> | 否 | undefined |
22
+ | name | FormData 文件字段名 | undefined &#124; string &#124; (file: UploadFile) => string | 否 | "file" |
23
+ | withCredentials | 是否携带 Cookie | undefined &#124; false &#124; true | 否 | false |
24
+ | timeout | 请求超时毫秒数,0 表示不超时 | undefined &#124; number | 否 | 0 |
25
+ | customRequest | 自定义上传请求;返回 Promise 时自动接管状态与结果,返回 { abort } 时手动回调 | undefined &#124; (option: UploadRequestOption) => UploadRequest &#124; Promise<unknown> &#124; void | 否 | undefined |
26
+ | accept | 接受的文件类型,同原生 accept | undefined &#124; string | 否 | undefined |
27
+ | multiple | 是否允许选择多个文件 | undefined &#124; false &#124; true | 否 | false |
28
+ | directory | 是否支持选择文件夹(含拖拽递归) | undefined &#124; false &#124; true | 否 | false |
29
+ | capture | 移动端捕获来源,透传原生 input | undefined &#124; false &#124; true &#124; "user" &#124; "environment" | 否 | undefined |
30
+ | paste | 是否支持聚焦后粘贴文件 | undefined &#124; false &#124; true | 否 | false |
31
+ | draggable | 是否渲染为拖拽上传区域 | undefined &#124; false &#124; true | 否 | false |
32
+ | disabled | 是否禁用 | undefined &#124; false &#124; true | 否 | undefined |
33
+ | autoUpload | 是否选择后立即上传 | undefined &#124; false &#124; true | 否 | true |
34
+ | limit | 最大文件数量,0 表示不限 | undefined &#124; number | 否 | 0 |
35
+ | beforeUpload | 上传前钩子,可拦截或替换文件 | undefined &#124; (file: File, fileList: File[]) => UploadBeforeUploadResult &#124; Promise<UploadBeforeUploadResult> | 否 | undefined |
36
+ | beforeRemove | 移除前钩子,返回 false 阻止移除 | undefined &#124; (file: UploadFile) => boolean &#124; void &#124; Promise<boolean &#124; void> | 否 | undefined |
37
+ | listType | 列表展示形态 | undefined &#124; "text" &#124; "picture" &#124; "picture-card" | 否 | "text" |
38
+ | tip | 提示文案,拖拽区与图片卡入口显示 | undefined &#124; string | 否 | undefined |
39
+ | showFileList | 是否展示文件列表 | undefined &#124; false &#124; true | 否 | true |
40
+ | showUploadButton | 是否展示上传入口,对象形式可配置达 limit 后仍显示 | undefined &#124; false &#124; true &#124; UploadShowUploadButton | 否 | true |
41
+ | showRemoveButton | 是否展示移除按钮 | undefined &#124; false &#124; true | 否 | true |
42
+ | showRetryButton | 是否展示重试 / 开始上传按钮 | undefined &#124; false &#124; true | 否 | true |
43
+ | showCancelButton | 是否展示取消上传按钮 | undefined &#124; false &#124; true | 否 | true |
44
+ | showPreviewButton | 是否展示预览按钮 | undefined &#124; false &#124; true | 否 | true |
45
+ | showDownloadButton | 是否展示下载按钮 | undefined &#124; false &#124; true | 否 | false |
46
+ | download | 链接是否带 download 属性,点击直接下载 | undefined &#124; false &#124; true | 否 | false |
47
+ | showLink | 有地址时是否渲染为链接 | undefined &#124; false &#124; true | 否 | true |
48
+ | imagePreview | 是否用 ImagePreview 打开图片 | undefined &#124; false &#124; true | 否 | false |
49
+ | imageLoading | 缩略图原生 loading 策略 | undefined &#124; "eager" &#124; "lazy" | 否 | undefined |
50
+ | responseUrlKey | 从响应中提取 url 的字段名(支持 data.url 嵌套路径)或解析函数 | undefined &#124; string &#124; (file: UploadFile, response?: unknown) => string &#124; undefined | 否 | undefined |
51
+ | ariaLabel | 上传入口的无障碍名称 | undefined &#124; string | 否 | undefined |
52
+
53
+ ### Events
54
+
55
+ | 事件 | 用途 | 监听器签名(即事件参数) |
56
+ | --- | --- | --- |
57
+ | update:fileList | 文件列表变化,配合 v-model:file-list 使用 | undefined &#124; (_files: UploadFile<unknown>[]) => any |
58
+ | change | 文件加入、进度、成功、失败、移除时触发 | undefined &#124; (_info: UploadChangeInfo) => any |
59
+ | progress | 上传进度变化时触发,percent 为 0 ~ 1 | undefined &#124; (_info: UploadProgressInfo) => any |
60
+ | success | 单个文件上传成功 | undefined &#124; (_file: UploadFile<unknown>) => any |
61
+ | error | 单个文件上传失败 | undefined &#124; (_file: UploadFile<unknown>) => any |
62
+ | remove | 文件被移除 | undefined &#124; (_file: UploadFile<unknown>) => any |
63
+ | exceed | 文件数量超出 limit,超出部分不进入列表 | undefined &#124; (_info: UploadExceedInfo) => any |
64
+ | reject | 文件被拒绝,reason 为 accept / limit / beforeUpload / read | undefined &#124; (_info: UploadRejectInfo) => any |
65
+ | preview | 点击文件名或预览按钮 | undefined &#124; (_file: UploadFile<unknown>) => any |
66
+ | download | 点击下载按钮 | undefined &#124; (_file: UploadFile<unknown>) => any |
67
+
68
+ ### Slots
69
+
70
+ | 名称 | 用途 | 公开类型 |
71
+ | --- | --- | --- |
72
+ | default | 上传入口内容 | undefined &#124; () => any |
73
+ | upload-button | 替换入口内容,保留组件交互 | undefined &#124; () => any |
74
+ | upload-item | 替换整行列表项渲染 | undefined &#124; (scope: { file: UploadFile; index: number; }) => any |
75
+ | file-icon | 自定义文本列表的文件图标 | undefined &#124; (scope: { file: UploadFile; }) => any |
76
+ | file-name | 自定义文件名内容 | undefined &#124; (scope: { file: UploadFile; }) => any |
77
+ | extra-button | 在操作区追加自定义操作 | undefined &#124; (scope: { file: UploadFile; }) => any |
78
+ | image | 自定义图片 / 图片卡的缩略图 | undefined &#124; (scope: { file: UploadFile; }) => any |
79
+
80
+ ### 实例方法 / 暴露值
81
+
82
+ | 名称 | 公开类型 |
83
+ | --- | --- |
84
+ | submit | 公开声明未细化(用法和实现已显式暴露) |
85
+ | abort | 公开声明未细化(用法和实现已显式暴露) |
86
+ | retry | 公开声明未细化(用法和实现已显式暴露) |
87
+ | upload | 公开声明未细化(用法和实现已显式暴露) |
88
+ | updateFile | 公开声明未细化(用法和实现已显式暴露) |
89
+ | fileList | UploadFile<unknown>[] |
90
+
91
+ ### 关联类型定义
92
+
93
+ 以下摘自本组件族声明,供查阅嵌套配置;运行时和值类型均以根入口可导出项为准。
94
+
95
+ ```typescript-reference
96
+ type UploadStatus = 'init' | 'uploading' | 'done' | 'error';
97
+
98
+ type UploadListType = 'text' | 'picture' | 'picture-card';
99
+
100
+ type UploadRequestMethod = 'post' | 'put' | 'patch';
101
+
102
+ type UploadRejectReason = 'accept' | 'limit' | 'beforeUpload' | 'read';
103
+
104
+ interface UploadFile<T = unknown> {
105
+ /** 文件唯一标识;外部列表未提供时组件会自动生成并保持稳定 */
106
+ uid: string;
107
+ name: string;
108
+ size?: number;
109
+ type?: string;
110
+ lastModified?: number;
111
+ /** 默认 done;上传中 uploading;失败 error;待上传 init */
112
+ status?: UploadStatus;
113
+ /** 上传进度,0 ~ 1(与 x-next Progress 组件一致) */
114
+ percent?: number;
115
+ /** 文件地址;上传成功后可由 responseUrlKey 从响应中提取 */
116
+ url?: string;
117
+ /** 缩略图地址;图片文件加入列表时自动生成本地预览地址 */
118
+ thumbUrl?: string;
119
+ /** 上传接口响应体 */
120
+ response?: T;
121
+ /** 上传失败的错误对象 */
122
+ error?: unknown;
123
+ /** 原始 File 对象;外部历史文件通常没有 */
124
+ file?: File;
125
+ }
126
+
127
+ type UploadBeforeUploadResult = void | boolean | File | Blob | string;
128
+
129
+ type UploadBeforeUpload = (file: File, fileList: File[]) => UploadBeforeUploadResult | Promise<UploadBeforeUploadResult>;
130
+
131
+ type UploadBeforeRemove = (file: UploadFile) => boolean | void | Promise<boolean | void>;
132
+
133
+ type UploadAction = string | ((file: File) => string | Promise<string>);
134
+
135
+ type UploadData = Record<string, unknown> | ((file: UploadFile) => Record<string, unknown> | Promise<Record<string, unknown>>);
136
+
137
+ type UploadName = string | ((file: UploadFile) => string);
138
+
139
+ type UploadResponseUrlKey = string | ((file: UploadFile, response?: unknown) => string | undefined);
140
+
141
+ interface UploadRequestOption {
142
+ action: string;
143
+ method: UploadRequestMethod;
144
+ /** 文件字段名 */
145
+ name: string;
146
+ /** 原始文件对象 */
147
+ file: File;
148
+ /** 列表项,可读取 uid / 业务附加字段 */
149
+ fileItem: UploadFile;
150
+ data?: Record<string, unknown>;
151
+ headers?: Record<string, string>;
152
+ withCredentials: boolean;
153
+ /** 超时毫秒数,0 表示不超时 */
154
+ timeout: number;
155
+ /**
156
+ * 每次尝试独立的中止信号;取消上传、移除文件或组件卸载时触发 abort。
157
+ * 可直接透传给 fetch / axios 的 signal;环境不支持 AbortController 时为 undefined。
158
+ */
159
+ signal?: AbortSignal;
160
+ /** 进度回调,percent 为 0 ~ 1 */
161
+ onProgress: (percent: number, event?: ProgressEvent) => void;
162
+ onSuccess: (response?: unknown) => void;
163
+ onError: (error?: unknown) => void;
164
+ }
165
+
166
+ interface UploadRequest {
167
+ abort?: () => void;
168
+ }
169
+
170
+ type UploadCustomRequest = (option: UploadRequestOption) => UploadRequest | Promise<unknown> | void;
171
+
172
+ interface UploadChangeInfo {
173
+ file: UploadFile;
174
+ fileList: UploadFile[];
175
+ }
176
+
177
+ interface UploadProgressInfo extends UploadChangeInfo {
178
+ percent: number;
179
+ event?: ProgressEvent;
180
+ }
181
+
182
+ interface UploadExceedInfo {
183
+ /** 因超出 limit 被拒绝的文件 */
184
+ files: File[];
185
+ fileList: UploadFile[];
186
+ }
187
+
188
+ interface UploadRejectInfo {
189
+ files: File[];
190
+ reason: UploadRejectReason;
191
+ }
192
+
193
+ interface UploadShowUploadButton {
194
+ /** 已达 limit 时仍显示上传入口,选中文件后触发 exceed 事件 */
195
+ showOnExceedLimit?: boolean;
196
+ }
197
+ ```
198
+
199
+
200
+ 返回 [Upload 用法](./upload.md)。