x-next 1.6.0 → 1.7.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 (95) hide show
  1. package/AI_USAGE.md +57 -4
  2. package/CHANGELOG.md +36 -0
  3. package/dist/components/date-picker/DatePicker.vue.d.ts +3 -3
  4. package/dist/components/date-picker/index.d.ts +6 -6
  5. package/dist/components/draggable/Draggable.d.ts +1 -1
  6. package/dist/components/draggable/index.d.ts +2 -2
  7. package/dist/components/drawer/index.d.ts +6 -6
  8. package/dist/components/drawer/src/Drawer.vue.d.ts +3 -3
  9. package/dist/components/dropdown/Dropdown.vue.d.ts +4 -4
  10. package/dist/components/dropdown/DropdownButton.vue.d.ts +5 -5
  11. package/dist/components/dropdown/DropdownSubmenu.vue.d.ts +4 -4
  12. package/dist/components/dropdown/index.d.ts +29 -29
  13. package/dist/components/form/FormItem.vue.d.ts +12 -12
  14. package/dist/components/form/form-item-label.vue.d.ts +3 -3
  15. package/dist/components/form/index.d.ts +24 -24
  16. package/dist/components/form-select/Select.d.ts +3 -3
  17. package/dist/components/form-select/index.d.ts +6 -6
  18. package/dist/components/form-slider/Slider.vue.d.ts +3 -3
  19. package/dist/components/form-slider/index.d.ts +6 -6
  20. package/dist/components/form-slider/slider-button.vue.d.ts +3 -3
  21. package/dist/components/grid/Row.vue.d.ts +3 -3
  22. package/dist/components/grid/index.d.ts +9 -9
  23. package/dist/components/image/Image.vue.d.ts +125 -17
  24. package/dist/components/image/ImagePreview.vue.d.ts +97 -7
  25. package/dist/components/image/ImagePreviewAction.d.ts +3 -3
  26. package/dist/components/image/ImagePreviewGroup.vue.d.ts +100 -7
  27. package/dist/components/image/hooks/use-image-drag.d.ts +2 -2
  28. package/dist/components/image/index.d.ts +712 -124
  29. package/dist/components/image/interface.d.ts +9 -1
  30. package/dist/components/image/preview-toolbar.vue.d.ts +3 -3
  31. package/dist/components/index.d.ts +1 -0
  32. package/dist/components/menu/sub-menu-pop.vue.d.ts +3 -3
  33. package/dist/components/pagination/page-options.vue.d.ts +6 -6
  34. package/dist/components/popconfirm/src/popup.vue.d.ts +3 -3
  35. package/dist/components/popover/Popover.d.ts +1 -1
  36. package/dist/components/popover/index.d.ts +3 -3
  37. package/dist/components/popup/Popup.d.ts +1 -1
  38. package/dist/components/popup/index.d.ts +3 -3
  39. package/dist/components/space/Space.d.ts +1 -1
  40. package/dist/components/space/index.d.ts +3 -3
  41. package/dist/components/tabs/Tabs.d.ts +1 -1
  42. package/dist/components/tabs/index.d.ts +3 -3
  43. package/dist/components/time-picker/TimePicker.vue.d.ts +3 -3
  44. package/dist/components/time-picker/index.d.ts +6 -6
  45. package/dist/components/tooltip/Tooltip.vue.d.ts +1 -1
  46. package/dist/components/tooltip/index.d.ts +3 -3
  47. package/dist/components/trigger/Trigger.d.ts +1 -1
  48. package/dist/components/trigger/index.d.ts +3 -3
  49. package/dist/components/upload/Upload.d.ts +372 -0
  50. package/dist/components/upload/context.d.ts +28 -0
  51. package/dist/components/upload/index.d.ts +656 -0
  52. package/dist/components/upload/interface.d.ts +110 -0
  53. package/dist/components/upload/props.d.ts +321 -0
  54. package/dist/components/upload/upload-list-item.d.ts +15 -0
  55. package/dist/components/upload/upload-list.d.ts +11 -0
  56. package/dist/components/upload/upload-picture-item.d.ts +20 -0
  57. package/dist/components/upload/upload-trigger.d.ts +8 -0
  58. package/dist/components/upload/utils.d.ts +48 -0
  59. package/dist/es/_styles/palette-aliases.js +2 -4
  60. package/dist/es/components/image/Image.vue.js +55 -45
  61. package/dist/es/components/image/Image.vue2.js +113 -92
  62. package/dist/es/components/image/ImagePreview.vue.js +66 -53
  63. package/dist/es/components/image/ImagePreview.vue2.js +219 -171
  64. package/dist/es/components/image/ImagePreviewAction.js +12 -15
  65. package/dist/es/components/image/ImagePreviewGroup.vue.js +21 -20
  66. package/dist/es/components/image/ImagePreviewGroup.vue2.js +45 -39
  67. package/dist/es/components/image/hooks/use-image-drag.js +16 -14
  68. package/dist/es/components/index.js +33 -31
  69. package/dist/es/components/upload/Upload.js +420 -0
  70. package/dist/es/components/upload/context.js +4 -0
  71. package/dist/es/components/upload/index.js +8 -0
  72. package/dist/es/components/upload/props.js +321 -0
  73. package/dist/es/components/upload/upload-list-item.js +138 -0
  74. package/dist/es/components/upload/upload-list.js +48 -0
  75. package/dist/es/components/upload/upload-picture-item.js +109 -0
  76. package/dist/es/components/upload/upload-trigger.js +89 -0
  77. package/dist/es/components/upload/utils.js +195 -0
  78. package/dist/es/icons/_self/upload-icons.js +103 -0
  79. package/dist/es/index.js +40 -38
  80. package/dist/es/locale/en-US.js +22 -0
  81. package/dist/es/locale/zh-CN.js +22 -0
  82. package/dist/es/style.css +1 -1
  83. package/dist/icons/_self/upload-icons.d.ts +523 -0
  84. package/dist/index.cjs +4 -4
  85. package/dist/index.umd.js +4 -4
  86. package/dist/locale/interface.d.ts +32 -0
  87. package/dist/style/base.css +1 -1
  88. package/dist/style/image.css +1 -1
  89. package/dist/style/upload.css +1 -0
  90. package/dist/style/upload.js +2 -0
  91. package/dist/style.css +1 -1
  92. package/dist/types.d.ts +1 -0
  93. package/package.json +1 -1
  94. package/volar.d.ts +1 -0
  95. package/dist/es/_hooks/use-popup-overflow-hidden.js +0 -29
package/AI_USAGE.md CHANGED
@@ -1,11 +1,11 @@
1
1
  <!-- Generated by pnpm generate:ai-usage. Edit src/docs/guide/ai-usage-recipes.md and script/ai-usage/manifest.js. -->
2
2
  # x-next AI 使用手册
3
3
 
4
- 适用版本:**x-next@1.6.0**。Vue:`^3.5.0`;Node:`>=20.19.0`。
4
+ 适用版本:**x-next@1.7.0**。Vue:`^3.5.0`;Node:`>=20.19.0`。
5
5
 
6
- 来源指纹(精选示例、映射、版本与公开类型声明):`8b4e92e3477781a27ff136cbc59a1f8508ba69d45a4f5539daeee1de7a5d9570`。
6
+ 来源指纹(精选示例、映射、版本与公开类型声明):`9a84aab8ad9388abbcade590e1a24c7d5049c9ef14d04313edfc96860c34ed86`。
7
7
 
8
- 先按业务需要选择组件,不要求全部迁移。本手册限定在用户确认的 22 个组件及必要的同族子组件,未覆盖的导出不表示已完成业务验收。
8
+ 先按业务需要选择组件,不要求全部迁移。本手册限定在用户确认的 23 个组件及必要的同族子组件,未覆盖的导出不表示已完成业务验收。
9
9
 
10
10
  读取入口:`node_modules/x-next/AI_USAGE.md`;可用 `require.resolve('x-next/AI_USAGE.md')` 定位。这个文件名不会自动让所有 AI 工具加载,消费项目应在自己的指令中明确引用。
11
11
 
@@ -35,7 +35,8 @@
35
35
  | Steps | `Steps` | `<x-steps>` | `v-model:current` | [组件文档](https://x-next.ztes.com/components/steps) |
36
36
  | Tabs | `Tabs` | `<x-tabs>` | `v-model:active-key` | [组件文档](https://x-next.ztes.com/components/tabs) |
37
37
  | Empty | `Empty` | `<x-empty>` | 无 | [组件文档](https://x-next.ztes.com/components/empty) |
38
- 这是一份给业务开发者和 AI Coding 使用的中文代码手册。以下 22 个入口是本手册选定的常用组件与服务;公开导出还有其他能力,不能据此推断所有导出都具有相同成熟度,也不要求每个项目全部使用。
38
+ | Upload | `Upload` | `<x-upload>` | `v-model:file-list` | [组件文档](https://x-next.ztes.com/components/upload) |
39
+ 这是一份给业务开发者和 AI Coding 使用的中文代码手册。以下 23 个入口是本手册选定的常用组件与服务;公开导出还有其他能力,不能据此推断所有导出都具有相同成熟度,也不要求每个项目全部使用。
39
40
 
40
41
  每节提供一个可复制到 `App.vue` 的独立 Vue SFC,显式从 `x-next` 根入口导入,并包含全量 CSS。实际项目可将重复的 CSS 导入统一移到应用入口。本文是代码配方,不新增 live demo;每节链接的既有组件文档提供可交互示例和完整 API。
41
42
 
@@ -645,3 +646,55 @@ function refresh() { refreshed.value = true; }
645
646
  </Empty>
646
647
  </template>
647
648
  ```
649
+
650
+ ## Upload
651
+
652
+ [组件文档与 live demo](https://x-next.ztes.com/components/upload)。`action` 是上传地址,也可用 `customRequest` 接管请求;两者都没提供时组件不会发起上传。`name` 是 FormData 字段名,默认 `'file'`;`method` 默认 `'post'`,`withCredentials` 默认 `false`。
653
+
654
+ **接入已有上传方法的推荐写法**:`customRequest` 返回 Promise 时组件自动接管状态,resolve 即成功(结果写入 `file.response`,可用 `responseUrlKey` 提取 url,字符串支持 `data.url` 嵌套路径)、reject 即失败并出现重试入口,无需手动调用 `onSuccess` / `onError`。axios、flyio、fetch 或任何返回 Promise 的方法都适用。返回值是 fetch `Response` 时组件读取响应体;非 2xx 按失败处理,`error.status` 为状态码。需要进度与取消时,把 option 的 `signal`(取消 / 移除 / 卸载时触发)与 `onProgress`(0 ~ 1)透传给底层请求。返回 `{ abort }` 并手动回调的旧写法仍然支持。
655
+
656
+ 列表默认非受控,用 `defaultFileList` 给初值;需要外部驱动时用 `v-model:file-list`,列表项以 `uid` 为稳定标识。`listType` 取 `'text' | 'picture' | 'picture-card'`。`limit` 为数量上限,超出会触发 `exceed`,超出部分不进入列表;`beforeUpload` 返回 `false` 拦截、返回新 `File` 替换,支持 Promise。
657
+
658
+ `change({ file, fileList })` 覆盖加入、进度、成功、失败和移除;`success` / `error` / `remove` / `progress` 是更细粒度的补充。`autoUpload=false` 时文件先以 `init` 入列,再用组件 `submit()` 上传、`abort()` 取消、`retry()` 重试。图片卡场景可加 `image-preview` 用内置 `ImagePreview` 看图。
659
+
660
+ ```vue
661
+ <script setup lang="ts">
662
+ import { ref } from 'vue';
663
+ import { Upload, type UploadFile } from 'x-next';
664
+ import 'x-next/dist/style.css';
665
+ const fileList = ref<UploadFile[]>([]);
666
+ const status = ref('尚未选择文件');
667
+ // 项目里已封装好的上传方法:返回 Promise 即可,组件自动显示成功与失败
668
+ function uploadAttachment(params: { file: File; orderId: string }) {
669
+ const form = new FormData();
670
+ form.append('file', params.file);
671
+ form.append('orderId', params.orderId);
672
+ return fetch('/api/upload', { method: 'POST', body: form }).then((response) => {
673
+ if (!response.ok) throw new Error(`上传失败:${response.status}`);
674
+ return response.json() as Promise<{ data: { url: string } }>;
675
+ });
676
+ }
677
+ function changed(info: { file: UploadFile; fileList: UploadFile[] }) {
678
+ status.value = `${info.file.name}:${info.file.status ?? 'unknown'}`;
679
+ }
680
+ function beforeUpload(file: File) {
681
+ // 超过 2MB 直接拦截,文件不会进入列表
682
+ return file.size <= 2 * 1024 * 1024;
683
+ }
684
+ </script>
685
+ <template>
686
+ <Upload
687
+ v-model:file-list="fileList"
688
+ :custom-request="({ file }) => uploadAttachment({ file, orderId: 'SO-20261003' })"
689
+ response-url-key="data.url"
690
+ name="file"
691
+ multiple
692
+ list-type="picture"
693
+ accept="image/*"
694
+ :limit="5"
695
+ :before-upload="beforeUpload"
696
+ @change="changed"
697
+ />
698
+ <p role="status">{{ status }}</p>
699
+ </template>
700
+ ```
package/CHANGELOG.md CHANGED
@@ -2,6 +2,42 @@
2
2
 
3
3
  本项目遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
4
4
 
5
+ ## [1.7.0] - 2026-10-04
6
+
7
+ ### 新增
8
+
9
+ - **Upload 上传组件**:支持点击选择、拖拽(含文件夹递归读取并保留相对路径)、粘贴上传;文本 / 图片 / 图片卡三种列表形态;`limit` 数量限制与 `exceed`、`beforeUpload` 拦截或替换文件、`beforeRemove` 移除前钩子;`autoUpload=false` 手动上传配合 `submit()` / `abort()` / `retry()`;逐项取消回到待上传态(不同于 Arco 归属 error 的处理);`updateFile(uid, file)` 原地替换文件;`tip` 提示、操作按钮开关、内置 `ImagePreview` 图片预览;`aria-live` 上传状态播报与操作按钮无障碍名称。
10
+ - **接入已有上传方法(`customRequest` 返回 Promise)**:业务只需 `:custom-request="({ file }) => uploadApi({ file, orderId })"`,组件自动接管状态——resolve 即成功、reject 即失败并出现重试入口,结果写入 `file.response`;axios、flyio、fetch 或任何返回 Promise 的方法均可直接接入,无需手动调用 `onSuccess` / `onError`。返回 `{ abort }` 加手动回调的写法继续兼容。
11
+ - **`UploadRequestOption.signal`**:每次尝试独立的 `AbortSignal`,取消上传、移除文件或组件卸载时触发,可直接透传给 fetch / axios 真正中止网络请求。
12
+ - **fetch `Response` 自动归一化**:`customRequest` 直接返回 `fetch(...)` 时,JSON / text 响应体解析后写入 `file.response`,非 2xx 按失败处理并在 `error.status` 提供状态码;axios / flyio 已解析的响应对象原样透传。
13
+ - **`responseUrlKey` 嵌套路径**:字符串支持 `data.url` 形式的路径提取;函数形态增加第二个参数 `response`。
14
+ - 新增 Upload 中英文语言包(`trigger` / `drag` / `fileUploaded` 等 18 项);ImagePreview 语言包补 `openLabel` / `loadError` / `loading`。
15
+ - 新增 `_self/upload-icons` 图标(上传云、文件、图片、刷新、下载、删除)。
16
+
17
+ ### 修复
18
+
19
+ - **Image 加载失败态**:默认错误占位由大红底改为中性色底 + 次级文字,错误占位补齐圆角,不再刺眼。
20
+ - **ImagePreview 工具条**:亮色白底改为深色半透明 + 模糊背景,hover 反馈统一为透明底浅色图标,窄屏工具条可折行不再溢出。
21
+ - **Image 换图与 SSR**:`src` 由 `watchEffect` 直写 DOM 改为声明式绑定带 key 的 `img`,SSR 正确输出地址;源变更重置加载状态,旧图片节点的 load / error 事件不再覆盖新图;`description` 按文档回退给 `alt`。
22
+ - **Image / Preview 键盘可达性**:缩略图可聚焦并用 Enter 打开预览;预览弹层补齐 Tab 圈定与关闭后焦点恢复;快捷键只在顶层预览生效。
23
+ - **ImagePreview 加载失败**:失败时提供可访问的错误占位而非只撤下 spinner;`actionsLayout=[]` 时自定义 actions 独立渲染,不再被一并隐藏。
24
+ - **ImagePreview 动态配置与边界**:`keyboard` / `popupContainer` 动态变更时迁移监听并清理计时器;`defaultScale` / `zoomRate` 非法值与满屏零尺寸兜底,不再产生无效 transform。
25
+ - **ImagePreviewAction**:`attrs` 不再覆盖内部 class、`disabled` 与 aria 属性,自定义样式与禁用语义同时生效。
26
+ - **Image 拖拽 hook**:`use-image-drag` 在节点更换时解绑旧监听,移除 / 换图不再残留移动状态。
27
+ - **ImagePreviewGroup 无障碍**:弹层读屏标签传入真实序号与总数,不再恒为「第 1 张,共 1 张」。
28
+ - **多层预览滚动锁**:预览使用 `useOverflow` 引用计数与容器迁移,关闭上层预览不再提前解锁页面滚动。
29
+ - **Image 外置 footer 高度**:根节点高度由内容撑开,多行说明不再溢出或与下方内容重叠。
30
+ - **ImagePreview SSR**:仅客户端清理 wheel 的 RAF,`docs:build` 不再输出 `cancelAnimationFrame` 报错。
31
+ - **Image 原生事件声明**:`load` / `error` 显式声明并转发,消费者 `strictTemplates` 编译通过。
32
+
33
+ ### 文档与测试
34
+
35
+ - 新增 `upload.md`(15 个 live demo,覆盖接入已有方法、响应提取、进度与取消、多选限制、拖拽、图片卡、手动上传、校验重试、插槽、禁用粘贴、文件夹、替换文件、Form 联动)与 `volar` 注册;组件索引、侧栏同步。
36
+ - `image.md` 重写扩充:12 个场景全部含 live demo 与完整 SFC,补换图、错误恢复、仅自定义工具条、局部容器、键盘组切换等。
37
+ - Upload 单测 81 项(含 Promise resolve / reject、取消后晚到结果不覆盖、signal 中止、fetch Response 归一化、手动回调优先等 13 项新增回归);Image 新增 21 项行为断言;全量测试 2136 项。
38
+ - AI 使用手册新增 Upload(23 个公共组件),`ai-usage-recipes.md` 示例改为「接入已有上传方法」并重新生成 `AI_USAGE.md`。
39
+ - `check:bundle-size` 的 Input 预算由 38,000 调整为 39,500:Input 消费者结构性携带整个共享语言包(zh-CN + en-US 合计 11,635 bytes,约占 30%),按组件拆分的方案继续在 `项目审查/2026-10-03-main-共享语言包与Input体积门禁.md` 跟踪。
40
+
5
41
  ## [1.6.0] - 2026-10-02
6
42
 
7
43
  ### 新增
@@ -597,8 +597,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
597
597
  resize: () => true;
598
598
  }, import('vue').PublicProps, {
599
599
  disabled: boolean;
600
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
601
600
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
601
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
602
602
  animationName: string;
603
603
  autoFitPosition: boolean;
604
604
  popupVisible: boolean;
@@ -785,8 +785,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
785
785
  onPopupVisibleChange?: ((visible: boolean) => any) | undefined;
786
786
  }>, () => any, {}, {}, {}, {
787
787
  disabled: boolean;
788
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
789
788
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
789
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
790
790
  animationName: string;
791
791
  autoFitPosition: boolean;
792
792
  popupVisible: boolean;
@@ -973,8 +973,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
973
973
  resize: () => true;
974
974
  }, string, {
975
975
  disabled: boolean;
976
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
977
976
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
977
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
978
978
  animationName: string;
979
979
  autoFitPosition: boolean;
980
980
  popupVisible: boolean;
@@ -483,8 +483,8 @@ export declare const DatePicker: {
483
483
  resize: () => true;
484
484
  }, import('vue').PublicProps, {
485
485
  disabled: boolean;
486
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
487
486
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
487
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
488
488
  animationName: string;
489
489
  autoFitPosition: boolean;
490
490
  popupVisible: boolean;
@@ -671,8 +671,8 @@ export declare const DatePicker: {
671
671
  onPopupVisibleChange?: ((visible: boolean) => any) | undefined;
672
672
  }>, () => any, {}, {}, {}, {
673
673
  disabled: boolean;
674
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
675
674
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
675
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
676
676
  animationName: string;
677
677
  autoFitPosition: boolean;
678
678
  popupVisible: boolean;
@@ -859,8 +859,8 @@ export declare const DatePicker: {
859
859
  resize: () => true;
860
860
  }, string, {
861
861
  disabled: boolean;
862
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
863
862
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
863
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
864
864
  animationName: string;
865
865
  autoFitPosition: boolean;
866
866
  popupVisible: boolean;
@@ -4203,8 +4203,8 @@ export declare const DatePicker: {
4203
4203
  resize: () => true;
4204
4204
  }, import('vue').PublicProps, {
4205
4205
  disabled: boolean;
4206
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
4207
4206
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
4207
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
4208
4208
  animationName: string;
4209
4209
  autoFitPosition: boolean;
4210
4210
  popupVisible: boolean;
@@ -4391,8 +4391,8 @@ export declare const DatePicker: {
4391
4391
  onPopupVisibleChange?: ((visible: boolean) => any) | undefined;
4392
4392
  }>, () => any, {}, {}, {}, {
4393
4393
  disabled: boolean;
4394
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
4395
4394
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
4395
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
4396
4396
  animationName: string;
4397
4397
  autoFitPosition: boolean;
4398
4398
  popupVisible: boolean;
@@ -4579,8 +4579,8 @@ export declare const DatePicker: {
4579
4579
  resize: () => true;
4580
4580
  }, string, {
4581
4581
  disabled: boolean;
4582
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
4583
4582
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
4583
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
4584
4584
  animationName: string;
4585
4585
  autoFitPosition: boolean;
4586
4586
  popupVisible: boolean;
@@ -79,7 +79,7 @@ declare const _default: import('vue').DefineComponent<{
79
79
  onSpill?: ((evt: import('sortablejs').SortableEvent) => void) | undefined | undefined;
80
80
  swap?: boolean | undefined | undefined;
81
81
  swapClass?: string | undefined | undefined;
82
- }, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("sort" | "filter" | "add" | "remove" | "change" | "end" | "start" | "clone" | "move" | "update:modelValue" | "update" | "choose" | "unchoose")[], "sort" | "filter" | "add" | "remove" | "change" | "end" | "start" | "clone" | "move" | "update:modelValue" | "update" | "choose" | "unchoose", import('vue').PublicProps, Readonly<{
82
+ }, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("sort" | "filter" | "add" | "remove" | "change" | "start" | "end" | "clone" | "move" | "update:modelValue" | "update" | "choose" | "unchoose")[], "sort" | "filter" | "add" | "remove" | "change" | "start" | "end" | "clone" | "move" | "update:modelValue" | "update" | "choose" | "unchoose", import('vue').PublicProps, Readonly<{
83
83
  [x: string]: /*elided*/ any;
84
84
  modelValue: any[];
85
85
  tag?: string | undefined;
@@ -92,7 +92,7 @@ export declare const Draggable: {
92
92
  onSort?: ((...args: any[]) => any) | undefined;
93
93
  onFilter?: ((...args: any[]) => any) | undefined;
94
94
  onMove?: ((...args: any[]) => any) | undefined;
95
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("sort" | "filter" | "add" | "remove" | "change" | "end" | "start" | "clone" | "move" | "update:modelValue" | "update" | "choose" | "unchoose")[], import('vue').PublicProps, {} | {
95
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("sort" | "filter" | "add" | "remove" | "change" | "start" | "end" | "clone" | "move" | "update:modelValue" | "update" | "choose" | "unchoose")[], import('vue').PublicProps, {} | {
96
96
  [x: string]: any;
97
97
  }, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
98
98
  P: {};
@@ -293,7 +293,7 @@ export declare const Draggable: {
293
293
  onSort?: ((...args: any[]) => any) | undefined;
294
294
  onFilter?: ((...args: any[]) => any) | undefined;
295
295
  onMove?: ((...args: any[]) => any) | undefined;
296
- }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("sort" | "filter" | "add" | "remove" | "change" | "end" | "start" | "clone" | "move" | "update:modelValue" | "update" | "choose" | "unchoose")[], "sort" | "filter" | "add" | "remove" | "change" | "end" | "start" | "clone" | "move" | "update:modelValue" | "update" | "choose" | "unchoose", {} | {
296
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, ("sort" | "filter" | "add" | "remove" | "change" | "start" | "end" | "clone" | "move" | "update:modelValue" | "update" | "choose" | "unchoose")[], "sort" | "filter" | "add" | "remove" | "change" | "start" | "end" | "clone" | "move" | "update:modelValue" | "update" | "choose" | "unchoose", {} | {
297
297
  [x: string]: any;
298
298
  }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
299
299
  install(app: import('vue').App): void;
@@ -409,7 +409,7 @@ export declare const Drawer: {
409
409
  fill: boolean;
410
410
  block: boolean;
411
411
  direction: "horizontal" | "vertical";
412
- align: "center" | "space-between" | "end" | "start" | "baseline";
412
+ align: "center" | "start" | "space-between" | "end" | "baseline";
413
413
  }, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
414
414
  P: {};
415
415
  B: {};
@@ -443,7 +443,7 @@ export declare const Drawer: {
443
443
  fill: boolean;
444
444
  block: boolean;
445
445
  direction: "horizontal" | "vertical";
446
- align: "center" | "space-between" | "end" | "start" | "baseline";
446
+ align: "center" | "start" | "space-between" | "end" | "baseline";
447
447
  }>;
448
448
  __isFragment?: never;
449
449
  __isTeleport?: never;
@@ -474,7 +474,7 @@ export declare const Drawer: {
474
474
  fill: boolean;
475
475
  block: boolean;
476
476
  direction: "horizontal" | "vertical";
477
- align: "center" | "space-between" | "end" | "start" | "baseline";
477
+ align: "center" | "start" | "space-between" | "end" | "baseline";
478
478
  }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
479
479
  install(app: import('vue').App): void;
480
480
  };
@@ -1370,7 +1370,7 @@ export declare const Drawer: {
1370
1370
  fill: boolean;
1371
1371
  block: boolean;
1372
1372
  direction: "horizontal" | "vertical";
1373
- align: "center" | "space-between" | "end" | "start" | "baseline";
1373
+ align: "center" | "start" | "space-between" | "end" | "baseline";
1374
1374
  }, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
1375
1375
  P: {};
1376
1376
  B: {};
@@ -1404,7 +1404,7 @@ export declare const Drawer: {
1404
1404
  fill: boolean;
1405
1405
  block: boolean;
1406
1406
  direction: "horizontal" | "vertical";
1407
- align: "center" | "space-between" | "end" | "start" | "baseline";
1407
+ align: "center" | "start" | "space-between" | "end" | "baseline";
1408
1408
  }>;
1409
1409
  __isFragment?: never;
1410
1410
  __isTeleport?: never;
@@ -1435,7 +1435,7 @@ export declare const Drawer: {
1435
1435
  fill: boolean;
1436
1436
  block: boolean;
1437
1437
  direction: "horizontal" | "vertical";
1438
- align: "center" | "space-between" | "end" | "start" | "baseline";
1438
+ align: "center" | "start" | "space-between" | "end" | "baseline";
1439
1439
  }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
1440
1440
  install(app: import('vue').App): void;
1441
1441
  };
@@ -503,7 +503,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
503
503
  fill: boolean;
504
504
  block: boolean;
505
505
  direction: "horizontal" | "vertical";
506
- align: "center" | "space-between" | "end" | "start" | "baseline";
506
+ align: "center" | "start" | "space-between" | "end" | "baseline";
507
507
  }, true, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
508
508
  P: {};
509
509
  B: {};
@@ -537,7 +537,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
537
537
  fill: boolean;
538
538
  block: boolean;
539
539
  direction: "horizontal" | "vertical";
540
- align: "center" | "space-between" | "end" | "start" | "baseline";
540
+ align: "center" | "start" | "space-between" | "end" | "baseline";
541
541
  }>;
542
542
  __isFragment?: never;
543
543
  __isTeleport?: never;
@@ -568,7 +568,7 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
568
568
  fill: boolean;
569
569
  block: boolean;
570
570
  direction: "horizontal" | "vertical";
571
- align: "center" | "space-between" | "end" | "start" | "baseline";
571
+ align: "center" | "start" | "space-between" | "end" | "baseline";
572
572
  }, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
573
573
  install(app: import('vue').App): void;
574
574
  };
@@ -232,8 +232,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
232
232
  onReachBottom?: ((ev: Event) => any) | undefined;
233
233
  }>, {
234
234
  loading: boolean;
235
- position: DropdownPosition;
236
235
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
236
+ position: DropdownPosition;
237
237
  popupVisible: boolean;
238
238
  defaultPopupVisible: boolean;
239
239
  alignPoint: boolean;
@@ -400,8 +400,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
400
400
  resize: () => true;
401
401
  }, import('vue').PublicProps, {
402
402
  disabled: boolean;
403
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
404
403
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
404
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
405
405
  animationName: string;
406
406
  autoFitPosition: boolean;
407
407
  popupVisible: boolean;
@@ -588,8 +588,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
588
588
  onPopupVisibleChange?: ((visible: boolean) => any) | undefined;
589
589
  }>, () => any, {}, {}, {}, {
590
590
  disabled: boolean;
591
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
592
591
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
592
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
593
593
  animationName: string;
594
594
  autoFitPosition: boolean;
595
595
  popupVisible: boolean;
@@ -776,8 +776,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
776
776
  resize: () => true;
777
777
  }, string, {
778
778
  disabled: boolean;
779
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
780
779
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
780
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
781
781
  animationName: string;
782
782
  autoFitPosition: boolean;
783
783
  popupVisible: boolean;
@@ -209,8 +209,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
209
209
  type: ButtonTypes;
210
210
  size: ButtonSize;
211
211
  disabled: boolean;
212
- position: DropdownPosition;
213
212
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
213
+ position: DropdownPosition;
214
214
  popupVisible: boolean;
215
215
  defaultPopupVisible: boolean;
216
216
  hideOnSelect: boolean;
@@ -745,8 +745,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
745
745
  onReachBottom?: ((ev: Event) => any) | undefined;
746
746
  }>, {
747
747
  loading: boolean;
748
- position: import('./interface.ts').DropdownPosition;
749
748
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
749
+ position: import('./interface.ts').DropdownPosition;
750
750
  popupVisible: boolean;
751
751
  defaultPopupVisible: boolean;
752
752
  alignPoint: boolean;
@@ -913,8 +913,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
913
913
  resize: () => true;
914
914
  }, import('vue').PublicProps, {
915
915
  disabled: boolean;
916
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
917
916
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
917
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
918
918
  animationName: string;
919
919
  autoFitPosition: boolean;
920
920
  popupVisible: boolean;
@@ -1101,8 +1101,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1101
1101
  onPopupVisibleChange?: ((visible: boolean) => any) | undefined;
1102
1102
  }>, () => any, {}, {}, {}, {
1103
1103
  disabled: boolean;
1104
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
1105
1104
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
1105
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
1106
1106
  animationName: string;
1107
1107
  autoFitPosition: boolean;
1108
1108
  popupVisible: boolean;
@@ -1289,8 +1289,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
1289
1289
  resize: () => true;
1290
1290
  }, string, {
1291
1291
  disabled: boolean;
1292
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
1293
1292
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
1293
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
1294
1294
  animationName: string;
1295
1295
  autoFitPosition: boolean;
1296
1296
  popupVisible: boolean;
@@ -294,8 +294,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
294
294
  onPopupVisibleChange?: ((visible: boolean) => any) | undefined;
295
295
  }>, {
296
296
  disabled: boolean;
297
- position: "lt" | "rt";
298
297
  trigger: "hover" | "click" | ("hover" | "click")[];
298
+ position: "lt" | "rt";
299
299
  popupVisible: boolean;
300
300
  defaultPopupVisible: boolean;
301
301
  }, {}, {
@@ -457,8 +457,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
457
457
  resize: () => true;
458
458
  }, import('vue').PublicProps, {
459
459
  disabled: boolean;
460
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
461
460
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
461
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
462
462
  animationName: string;
463
463
  autoFitPosition: boolean;
464
464
  popupVisible: boolean;
@@ -645,8 +645,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
645
645
  onPopupVisibleChange?: ((visible: boolean) => any) | undefined;
646
646
  }>, () => any, {}, {}, {}, {
647
647
  disabled: boolean;
648
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
649
648
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
649
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
650
650
  animationName: string;
651
651
  autoFitPosition: boolean;
652
652
  popupVisible: boolean;
@@ -833,8 +833,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
833
833
  resize: () => true;
834
834
  }, string, {
835
835
  disabled: boolean;
836
- position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
837
836
  trigger: "hover" | "click" | "focus" | "contextMenu" | ("hover" | "click" | "focus" | "contextMenu")[];
837
+ position: "top" | "tl" | "tr" | "bottom" | "bl" | "br" | "left" | "lt" | "lb" | "right" | "rt" | "rb";
838
838
  animationName: string;
839
839
  autoFitPosition: boolean;
840
840
  popupVisible: boolean;