x-next 1.16.1 → 1.17.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.
- package/AI_USAGE/catalog.md +3 -2
- package/AI_USAGE/components/alert-api.md +1 -1
- package/AI_USAGE/components/alert.md +1 -1
- package/AI_USAGE/components/bar-chart-api.md +1 -1
- package/AI_USAGE/components/bar-chart.md +1 -1
- package/AI_USAGE/components/boxicons.md +1 -1
- package/AI_USAGE/components/button-api.md +1 -1
- package/AI_USAGE/components/button.md +1 -1
- package/AI_USAGE/components/charts.md +1 -1
- package/AI_USAGE/components/checkbox-api.md +1 -1
- package/AI_USAGE/components/checkbox.md +1 -1
- package/AI_USAGE/components/color-picker-api.md +1 -1
- package/AI_USAGE/components/color-picker.md +1 -1
- package/AI_USAGE/components/config-provider-api.md +1 -1
- package/AI_USAGE/components/config-provider.md +1 -1
- package/AI_USAGE/components/date-picker-api.md +1 -1
- package/AI_USAGE/components/date-picker.md +1 -1
- package/AI_USAGE/components/dialog-api.md +1 -1
- package/AI_USAGE/components/dialog.md +1 -1
- package/AI_USAGE/components/draggable-api.md +1 -1
- package/AI_USAGE/components/draggable.md +1 -1
- package/AI_USAGE/components/drawer-api.md +1 -1
- package/AI_USAGE/components/drawer.md +1 -1
- package/AI_USAGE/components/dropdown-api.md +1 -1
- package/AI_USAGE/components/dropdown.md +1 -1
- package/AI_USAGE/components/empty-api.md +1 -1
- package/AI_USAGE/components/empty.md +1 -1
- package/AI_USAGE/components/finicon.md +1 -1
- package/AI_USAGE/components/form-api.md +1 -1
- package/AI_USAGE/components/form.md +1 -1
- package/AI_USAGE/components/grid-api.md +1 -1
- package/AI_USAGE/components/grid.md +1 -1
- package/AI_USAGE/components/heatmap-api.md +1 -1
- package/AI_USAGE/components/heatmap.md +1 -1
- package/AI_USAGE/components/icon-api.md +1 -1
- package/AI_USAGE/components/icon.md +1 -1
- package/AI_USAGE/components/image-api.md +1 -1
- package/AI_USAGE/components/image.md +1 -1
- package/AI_USAGE/components/input-api.md +1 -1
- package/AI_USAGE/components/input-number-api.md +1 -1
- package/AI_USAGE/components/input-number.md +1 -1
- package/AI_USAGE/components/input-tag-api.md +1 -1
- package/AI_USAGE/components/input-tag.md +1 -1
- package/AI_USAGE/components/input.md +1 -1
- package/AI_USAGE/components/layout-api.md +1 -1
- package/AI_USAGE/components/layout.md +1 -1
- package/AI_USAGE/components/line-chart-api.md +1 -1
- package/AI_USAGE/components/line-chart.md +1 -1
- package/AI_USAGE/components/link-api.md +1 -1
- package/AI_USAGE/components/link.md +1 -1
- package/AI_USAGE/components/menu-api.md +1 -1
- package/AI_USAGE/components/menu.md +1 -1
- package/AI_USAGE/components/message-api.md +1 -1
- package/AI_USAGE/components/message-box-api.md +1 -1
- package/AI_USAGE/components/message-box.md +1 -1
- package/AI_USAGE/components/message.md +1 -1
- package/AI_USAGE/components/network-api.md +1 -1
- package/AI_USAGE/components/network.md +1 -1
- package/AI_USAGE/components/notification-api.md +1 -1
- package/AI_USAGE/components/notification.md +1 -1
- package/AI_USAGE/components/pagination-api.md +1 -1
- package/AI_USAGE/components/pagination.md +1 -1
- package/AI_USAGE/components/pie-chart-api.md +1 -1
- package/AI_USAGE/components/pie-chart.md +1 -1
- package/AI_USAGE/components/popconfirm-api.md +1 -1
- package/AI_USAGE/components/popconfirm.md +1 -1
- package/AI_USAGE/components/popover-api.md +1 -1
- package/AI_USAGE/components/popover.md +1 -1
- package/AI_USAGE/components/popup-api.md +1 -1
- package/AI_USAGE/components/popup.md +1 -1
- package/AI_USAGE/components/progress-api.md +1 -1
- package/AI_USAGE/components/progress.md +1 -1
- package/AI_USAGE/components/radio-api.md +1 -1
- package/AI_USAGE/components/radio.md +1 -1
- package/AI_USAGE/components/rate-api.md +1 -1
- package/AI_USAGE/components/rate.md +1 -1
- package/AI_USAGE/components/resize-box-api.md +1 -1
- package/AI_USAGE/components/resize-box.md +1 -1
- package/AI_USAGE/components/scrollbar-api.md +1 -1
- package/AI_USAGE/components/scrollbar.md +1 -1
- package/AI_USAGE/components/select-api.md +1 -1
- package/AI_USAGE/components/select.md +1 -1
- package/AI_USAGE/components/skeleton-api.md +1 -1
- package/AI_USAGE/components/skeleton.md +1 -1
- package/AI_USAGE/components/slider-api.md +1 -1
- package/AI_USAGE/components/slider.md +1 -1
- package/AI_USAGE/components/space-api.md +1 -1
- package/AI_USAGE/components/space.md +1 -1
- package/AI_USAGE/components/spin-api.md +1 -1
- package/AI_USAGE/components/spin.md +1 -1
- package/AI_USAGE/components/steps-api.md +1 -1
- package/AI_USAGE/components/steps.md +1 -1
- package/AI_USAGE/components/switch-api.md +1 -1
- package/AI_USAGE/components/switch.md +1 -1
- package/AI_USAGE/components/table-api.md +1 -1
- package/AI_USAGE/components/table.md +1 -1
- package/AI_USAGE/components/tabs-api.md +1 -1
- package/AI_USAGE/components/tabs.md +1 -1
- package/AI_USAGE/components/tag-api.md +1 -1
- package/AI_USAGE/components/tag.md +1 -1
- package/AI_USAGE/components/textarea-api.md +1 -1
- package/AI_USAGE/components/textarea.md +1 -1
- package/AI_USAGE/components/time-picker-api.md +1 -1
- package/AI_USAGE/components/time-picker.md +1 -1
- package/AI_USAGE/components/time-range-selector-api.md +1 -1
- package/AI_USAGE/components/time-range-selector.md +1 -1
- package/AI_USAGE/components/timeline-api.md +1 -1
- package/AI_USAGE/components/timeline.md +1 -1
- package/AI_USAGE/components/tooltip-api.md +1 -1
- package/AI_USAGE/components/tooltip.md +1 -1
- package/AI_USAGE/components/transfer-api.md +165 -0
- package/AI_USAGE/components/transfer.md +515 -0
- package/AI_USAGE/components/tree-select-api.md +1 -1
- package/AI_USAGE/components/tree-select.md +1 -1
- package/AI_USAGE/components/trend-chart-api.md +1 -1
- package/AI_USAGE/components/trend-chart.md +1 -1
- package/AI_USAGE/components/trigger-api.md +1 -1
- package/AI_USAGE/components/trigger.md +1 -1
- package/AI_USAGE/components/upload-api.md +1 -1
- package/AI_USAGE/components/upload.md +1 -1
- package/AI_USAGE/components/watermark-api.md +1 -1
- package/AI_USAGE/components/watermark.md +1 -1
- package/AI_USAGE/core.md +1 -1
- package/AI_USAGE/index.md +3 -2
- package/AI_USAGE/recipes/form-on-demand.md +1 -1
- package/AI_USAGE.md +663 -3
- package/CHANGELOG.md +20 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/transfer/Transfer.d.ts +211 -0
- package/dist/components/transfer/index.d.ts +299 -0
- package/dist/components/transfer/interface.d.ts +80 -0
- package/dist/components/transfer/transfer-panel.d.ts +82 -0
- package/dist/components/transfer/utils.d.ts +5 -0
- package/dist/es/components/index.js +47 -45
- package/dist/es/components/transfer/Transfer.js +267 -0
- package/dist/es/components/transfer/index.js +7 -0
- package/dist/es/components/transfer/transfer-panel.js +251 -0
- package/dist/es/components/transfer/utils.js +9 -0
- package/dist/es/index.js +46 -44
- package/dist/es/locale/en-US.js +16 -0
- package/dist/es/locale/zh-CN.js +16 -0
- package/dist/es/style.css +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.umd.js +3 -3
- package/dist/locale/interface.d.ts +16 -0
- package/dist/style/base.css +1 -1
- package/dist/style/dependencies.json +14 -0
- package/dist/style/transfer.css +1 -0
- package/dist/style/transfer.js +12 -0
- package/dist/style.css +1 -1
- package/dist/types.d.ts +1 -0
- package/package.json +3 -1
- package/volar.d.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,26 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [1.17.0] - 2026-10-13
|
|
8
|
+
|
|
9
|
+
### 新增
|
|
10
|
+
|
|
11
|
+
- 新增 `Transfer` 数据穿梭框:双向移动、目标值与临时勾选值独立受控 / 非受控、数字和字符串键、目标追加排序、搜索过滤与当前结果 / 页内全选。
|
|
12
|
+
- 支持禁用、加载、错误状态、单向移除、简单模式、独立分页、虚拟滚动和异步数据;自定义选项、列表、标题、操作图标与页脚。
|
|
13
|
+
- 接入 Form 校验和重置、原生键盘交互与列表方向键定位;补充公开类型、Volar、locale、按需样式入口 `x-next/style/transfer` 和独立 AI 手册。
|
|
14
|
+
- Transfer 文档提供 12 个可交互 live demo 及对应完整 Vue SFC,覆盖受控勾选、搜索、状态、插槽、分页、大数据、异步数据和 Form 组合。
|
|
15
|
+
|
|
16
|
+
### 修复
|
|
17
|
+
|
|
18
|
+
- Transfer 标题全选框与列表复选框、文字保持水平对齐,原生点击区域与可见方框重合。
|
|
19
|
+
- Transfer 移除鼠标点击触发的冗余整行蓝框,保留 Checkbox / Button 和列表容器的键盘焦点提示。
|
|
20
|
+
|
|
21
|
+
### 工程与验证
|
|
22
|
+
|
|
23
|
+
- 新增 Transfer 行为单测、文档浏览器回归和实际 tarball 生产消费检查,验证按需样式、严格类型、对齐、鼠标与键盘焦点及移动交互。
|
|
24
|
+
- 将 Transfer 纳入覆盖率门禁,同步生成 1.17.0 AI 手册和 API 参考。
|
|
25
|
+
- 量化 Transfer 中英文文案对共享语言包的体积影响,并按既有策略调整 Input 消费预算;保留独立组件与图标包泄漏检查。
|
|
26
|
+
|
|
7
27
|
## [1.16.1] - 2026-10-13
|
|
8
28
|
|
|
9
29
|
### 修复
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { CSSProperties, PropType, SlotsType } from 'vue';
|
|
2
|
+
import { VirtualListProps } from '../virtual-list-v2/interface';
|
|
3
|
+
import { TransferItem, TransferValue, TransferType, TransferSlots, TransferPagination } from './interface';
|
|
4
|
+
declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
|
|
5
|
+
/** @zh 穿梭框数据,value 在数据内唯一 @en Transfer data with unique values */
|
|
6
|
+
data: {
|
|
7
|
+
type: PropType<TransferItem[]>;
|
|
8
|
+
default: () => never[];
|
|
9
|
+
};
|
|
10
|
+
/** @zh 目标列表的值 @en Target values @vModel */
|
|
11
|
+
modelValue: {
|
|
12
|
+
type: PropType<TransferValue[]>;
|
|
13
|
+
default: undefined;
|
|
14
|
+
};
|
|
15
|
+
/** @zh 非受控目标默认值 @en Default target values */
|
|
16
|
+
defaultValue: {
|
|
17
|
+
type: PropType<TransferValue[]>;
|
|
18
|
+
default: () => never[];
|
|
19
|
+
};
|
|
20
|
+
/** @zh 两侧临时勾选值 @en Checked values in both panels @vModel */
|
|
21
|
+
selectedKeys: {
|
|
22
|
+
type: PropType<TransferValue[]>;
|
|
23
|
+
default: undefined;
|
|
24
|
+
};
|
|
25
|
+
/** @zh 非受控默认勾选值 @en Default checked values */
|
|
26
|
+
defaultSelectedKeys: {
|
|
27
|
+
type: PropType<TransferValue[]>;
|
|
28
|
+
default: () => never[];
|
|
29
|
+
};
|
|
30
|
+
/** @zh 禁用整个穿梭框 @en Disable transfer */
|
|
31
|
+
disabled: {
|
|
32
|
+
type: BooleanConstructor;
|
|
33
|
+
default: boolean;
|
|
34
|
+
};
|
|
35
|
+
/** @zh 加载中,阻止勾选和移动 @en Loading, blocks selection and moves */
|
|
36
|
+
loading: {
|
|
37
|
+
type: BooleanConstructor;
|
|
38
|
+
default: boolean;
|
|
39
|
+
};
|
|
40
|
+
/** @zh 错误状态 @en Error state */
|
|
41
|
+
error: {
|
|
42
|
+
type: BooleanConstructor;
|
|
43
|
+
default: boolean;
|
|
44
|
+
};
|
|
45
|
+
/** @zh 点击选项立即移动 @en Move items immediately when clicked */
|
|
46
|
+
simple: {
|
|
47
|
+
type: BooleanConstructor;
|
|
48
|
+
default: boolean;
|
|
49
|
+
};
|
|
50
|
+
/** @zh 单向模式,目标侧通过移除按钮返回 @en One-way mode with target remove buttons */
|
|
51
|
+
oneWay: {
|
|
52
|
+
type: BooleanConstructor;
|
|
53
|
+
default: boolean;
|
|
54
|
+
};
|
|
55
|
+
/** @zh 显示两侧搜索 @en Show search inputs */
|
|
56
|
+
showSearch: {
|
|
57
|
+
type: BooleanConstructor;
|
|
58
|
+
default: boolean;
|
|
59
|
+
};
|
|
60
|
+
/** @zh 显示全选,搜索/分页时仅当前可见项 @en Select all visible items */
|
|
61
|
+
showSelectAll: {
|
|
62
|
+
type: BooleanConstructor;
|
|
63
|
+
default: boolean;
|
|
64
|
+
};
|
|
65
|
+
/** @zh 源、目标列表标题 @en Source and target titles */
|
|
66
|
+
title: PropType<string[]>;
|
|
67
|
+
/** @zh 向右、向左操作文案 @en Move right and left operation labels */
|
|
68
|
+
operations: {
|
|
69
|
+
type: PropType<string[]>;
|
|
70
|
+
default: () => never[];
|
|
71
|
+
};
|
|
72
|
+
/** @zh 搜索占位文案 @en Search placeholder */
|
|
73
|
+
searchPlaceholder: StringConstructor;
|
|
74
|
+
/** @zh 自定义搜索过滤 @en Custom search filter */
|
|
75
|
+
filterOption: PropType<(input: string, item: TransferItem, type: TransferType) => boolean>;
|
|
76
|
+
/** @zh 目标排序:数据源顺序或模型追加顺序 @en Target ordering */
|
|
77
|
+
targetOrder: {
|
|
78
|
+
type: PropType<"original" | "append">;
|
|
79
|
+
default: string;
|
|
80
|
+
};
|
|
81
|
+
/** @zh 两侧面板样式 @en Panel style */
|
|
82
|
+
listStyle: PropType<CSSProperties>;
|
|
83
|
+
/** @zh 分页配置,优先于虚拟列表 @en Pagination takes precedence over virtual list */
|
|
84
|
+
pagination: {
|
|
85
|
+
type: PropType<boolean | TransferPagination>;
|
|
86
|
+
default: boolean;
|
|
87
|
+
};
|
|
88
|
+
/** @zh 虚拟滚动配置 @en Virtual list options */
|
|
89
|
+
virtualListProps: PropType<VirtualListProps>;
|
|
90
|
+
}>, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
91
|
+
'update:modelValue': (_values: TransferValue[]) => true;
|
|
92
|
+
'update:selectedKeys': (_values: TransferValue[]) => true;
|
|
93
|
+
/** @zh 移动完成时报告目标值、移动方向及实际移动值 @en Target values, destination and moved values */
|
|
94
|
+
change: (_values: TransferValue[], _type: TransferType, _movedValues: TransferValue[]) => true;
|
|
95
|
+
/** @zh 临时勾选变化,分别报告源侧和目标侧 @en Source and target checked values */
|
|
96
|
+
select: (_sourceSelected: TransferValue[], _targetSelected: TransferValue[]) => true;
|
|
97
|
+
/** @zh 搜索输入变化 @en Search input changes */
|
|
98
|
+
search: (_value: string, _type: TransferType) => true;
|
|
99
|
+
/** @zh 列表滚动 @en List scroll */
|
|
100
|
+
scroll: (_event: Event, _type: TransferType) => true;
|
|
101
|
+
}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
|
|
102
|
+
/** @zh 穿梭框数据,value 在数据内唯一 @en Transfer data with unique values */
|
|
103
|
+
data: {
|
|
104
|
+
type: PropType<TransferItem[]>;
|
|
105
|
+
default: () => never[];
|
|
106
|
+
};
|
|
107
|
+
/** @zh 目标列表的值 @en Target values @vModel */
|
|
108
|
+
modelValue: {
|
|
109
|
+
type: PropType<TransferValue[]>;
|
|
110
|
+
default: undefined;
|
|
111
|
+
};
|
|
112
|
+
/** @zh 非受控目标默认值 @en Default target values */
|
|
113
|
+
defaultValue: {
|
|
114
|
+
type: PropType<TransferValue[]>;
|
|
115
|
+
default: () => never[];
|
|
116
|
+
};
|
|
117
|
+
/** @zh 两侧临时勾选值 @en Checked values in both panels @vModel */
|
|
118
|
+
selectedKeys: {
|
|
119
|
+
type: PropType<TransferValue[]>;
|
|
120
|
+
default: undefined;
|
|
121
|
+
};
|
|
122
|
+
/** @zh 非受控默认勾选值 @en Default checked values */
|
|
123
|
+
defaultSelectedKeys: {
|
|
124
|
+
type: PropType<TransferValue[]>;
|
|
125
|
+
default: () => never[];
|
|
126
|
+
};
|
|
127
|
+
/** @zh 禁用整个穿梭框 @en Disable transfer */
|
|
128
|
+
disabled: {
|
|
129
|
+
type: BooleanConstructor;
|
|
130
|
+
default: boolean;
|
|
131
|
+
};
|
|
132
|
+
/** @zh 加载中,阻止勾选和移动 @en Loading, blocks selection and moves */
|
|
133
|
+
loading: {
|
|
134
|
+
type: BooleanConstructor;
|
|
135
|
+
default: boolean;
|
|
136
|
+
};
|
|
137
|
+
/** @zh 错误状态 @en Error state */
|
|
138
|
+
error: {
|
|
139
|
+
type: BooleanConstructor;
|
|
140
|
+
default: boolean;
|
|
141
|
+
};
|
|
142
|
+
/** @zh 点击选项立即移动 @en Move items immediately when clicked */
|
|
143
|
+
simple: {
|
|
144
|
+
type: BooleanConstructor;
|
|
145
|
+
default: boolean;
|
|
146
|
+
};
|
|
147
|
+
/** @zh 单向模式,目标侧通过移除按钮返回 @en One-way mode with target remove buttons */
|
|
148
|
+
oneWay: {
|
|
149
|
+
type: BooleanConstructor;
|
|
150
|
+
default: boolean;
|
|
151
|
+
};
|
|
152
|
+
/** @zh 显示两侧搜索 @en Show search inputs */
|
|
153
|
+
showSearch: {
|
|
154
|
+
type: BooleanConstructor;
|
|
155
|
+
default: boolean;
|
|
156
|
+
};
|
|
157
|
+
/** @zh 显示全选,搜索/分页时仅当前可见项 @en Select all visible items */
|
|
158
|
+
showSelectAll: {
|
|
159
|
+
type: BooleanConstructor;
|
|
160
|
+
default: boolean;
|
|
161
|
+
};
|
|
162
|
+
/** @zh 源、目标列表标题 @en Source and target titles */
|
|
163
|
+
title: PropType<string[]>;
|
|
164
|
+
/** @zh 向右、向左操作文案 @en Move right and left operation labels */
|
|
165
|
+
operations: {
|
|
166
|
+
type: PropType<string[]>;
|
|
167
|
+
default: () => never[];
|
|
168
|
+
};
|
|
169
|
+
/** @zh 搜索占位文案 @en Search placeholder */
|
|
170
|
+
searchPlaceholder: StringConstructor;
|
|
171
|
+
/** @zh 自定义搜索过滤 @en Custom search filter */
|
|
172
|
+
filterOption: PropType<(input: string, item: TransferItem, type: TransferType) => boolean>;
|
|
173
|
+
/** @zh 目标排序:数据源顺序或模型追加顺序 @en Target ordering */
|
|
174
|
+
targetOrder: {
|
|
175
|
+
type: PropType<"original" | "append">;
|
|
176
|
+
default: string;
|
|
177
|
+
};
|
|
178
|
+
/** @zh 两侧面板样式 @en Panel style */
|
|
179
|
+
listStyle: PropType<CSSProperties>;
|
|
180
|
+
/** @zh 分页配置,优先于虚拟列表 @en Pagination takes precedence over virtual list */
|
|
181
|
+
pagination: {
|
|
182
|
+
type: PropType<boolean | TransferPagination>;
|
|
183
|
+
default: boolean;
|
|
184
|
+
};
|
|
185
|
+
/** @zh 虚拟滚动配置 @en Virtual list options */
|
|
186
|
+
virtualListProps: PropType<VirtualListProps>;
|
|
187
|
+
}>> & Readonly<{
|
|
188
|
+
onSearch?: ((_value: string, _type: TransferType) => any) | undefined;
|
|
189
|
+
onSelect?: ((_sourceSelected: TransferValue[], _targetSelected: TransferValue[]) => any) | undefined;
|
|
190
|
+
onChange?: ((_values: TransferValue[], _type: TransferType, _movedValues: TransferValue[]) => any) | undefined;
|
|
191
|
+
onScroll?: ((_event: Event, _type: TransferType) => any) | undefined;
|
|
192
|
+
"onUpdate:modelValue"?: ((_values: TransferValue[]) => any) | undefined;
|
|
193
|
+
"onUpdate:selectedKeys"?: ((_values: TransferValue[]) => any) | undefined;
|
|
194
|
+
}>, {
|
|
195
|
+
error: boolean;
|
|
196
|
+
disabled: boolean;
|
|
197
|
+
loading: boolean;
|
|
198
|
+
data: TransferItem[];
|
|
199
|
+
pagination: boolean | TransferPagination;
|
|
200
|
+
defaultValue: TransferValue[];
|
|
201
|
+
modelValue: TransferValue[];
|
|
202
|
+
selectedKeys: TransferValue[];
|
|
203
|
+
defaultSelectedKeys: TransferValue[];
|
|
204
|
+
simple: boolean;
|
|
205
|
+
operations: string[];
|
|
206
|
+
oneWay: boolean;
|
|
207
|
+
showSearch: boolean;
|
|
208
|
+
showSelectAll: boolean;
|
|
209
|
+
targetOrder: "append" | "original";
|
|
210
|
+
}, SlotsType<TransferSlots>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
211
|
+
export default _default;
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
export type { TransferProps, TransferItem, TransferValue, TransferType, TransferPagination, TransferListSlotProps, TransferTitleSlotProps, TransferItemSlotProps, TransferSlots, } from './interface';
|
|
2
|
+
export declare const Transfer: {
|
|
3
|
+
new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('vue').ExtractPropTypes<{
|
|
4
|
+
data: {
|
|
5
|
+
type: import('vue').PropType<import('./interface').TransferItem[]>;
|
|
6
|
+
default: () => never[];
|
|
7
|
+
};
|
|
8
|
+
modelValue: {
|
|
9
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
10
|
+
default: undefined;
|
|
11
|
+
};
|
|
12
|
+
defaultValue: {
|
|
13
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
14
|
+
default: () => never[];
|
|
15
|
+
};
|
|
16
|
+
selectedKeys: {
|
|
17
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
18
|
+
default: undefined;
|
|
19
|
+
};
|
|
20
|
+
defaultSelectedKeys: {
|
|
21
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
22
|
+
default: () => never[];
|
|
23
|
+
};
|
|
24
|
+
disabled: {
|
|
25
|
+
type: BooleanConstructor;
|
|
26
|
+
default: boolean;
|
|
27
|
+
};
|
|
28
|
+
loading: {
|
|
29
|
+
type: BooleanConstructor;
|
|
30
|
+
default: boolean;
|
|
31
|
+
};
|
|
32
|
+
error: {
|
|
33
|
+
type: BooleanConstructor;
|
|
34
|
+
default: boolean;
|
|
35
|
+
};
|
|
36
|
+
simple: {
|
|
37
|
+
type: BooleanConstructor;
|
|
38
|
+
default: boolean;
|
|
39
|
+
};
|
|
40
|
+
oneWay: {
|
|
41
|
+
type: BooleanConstructor;
|
|
42
|
+
default: boolean;
|
|
43
|
+
};
|
|
44
|
+
showSearch: {
|
|
45
|
+
type: BooleanConstructor;
|
|
46
|
+
default: boolean;
|
|
47
|
+
};
|
|
48
|
+
showSelectAll: {
|
|
49
|
+
type: BooleanConstructor;
|
|
50
|
+
default: boolean;
|
|
51
|
+
};
|
|
52
|
+
title: import('vue').PropType<string[]>;
|
|
53
|
+
operations: {
|
|
54
|
+
type: import('vue').PropType<string[]>;
|
|
55
|
+
default: () => never[];
|
|
56
|
+
};
|
|
57
|
+
searchPlaceholder: StringConstructor;
|
|
58
|
+
filterOption: import('vue').PropType<(input: string, item: import('./interface').TransferItem, type: import('./interface').TransferType) => boolean>;
|
|
59
|
+
targetOrder: {
|
|
60
|
+
type: import('vue').PropType<"original" | "append">;
|
|
61
|
+
default: string;
|
|
62
|
+
};
|
|
63
|
+
listStyle: import('vue').PropType<import('vue').CSSProperties>;
|
|
64
|
+
pagination: {
|
|
65
|
+
type: import('vue').PropType<boolean | import('./interface').TransferPagination>;
|
|
66
|
+
default: boolean;
|
|
67
|
+
};
|
|
68
|
+
virtualListProps: import('vue').PropType<import('../virtual-list-v2/interface').VirtualListProps>;
|
|
69
|
+
}>> & Readonly<{
|
|
70
|
+
onSearch?: ((_value: string, _type: import('./interface').TransferType) => any) | undefined;
|
|
71
|
+
onSelect?: ((_sourceSelected: import('./interface').TransferValue[], _targetSelected: import('./interface').TransferValue[]) => any) | undefined;
|
|
72
|
+
onChange?: ((_values: import('./interface').TransferValue[], _type: import('./interface').TransferType, _movedValues: import('./interface').TransferValue[]) => any) | undefined;
|
|
73
|
+
onScroll?: ((_event: Event, _type: import('./interface').TransferType) => any) | undefined;
|
|
74
|
+
"onUpdate:modelValue"?: ((_values: import('./interface').TransferValue[]) => any) | undefined;
|
|
75
|
+
"onUpdate:selectedKeys"?: ((_values: import('./interface').TransferValue[]) => any) | undefined;
|
|
76
|
+
}>, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
77
|
+
'update:modelValue': (_values: import('./interface').TransferValue[]) => true;
|
|
78
|
+
'update:selectedKeys': (_values: import('./interface').TransferValue[]) => true;
|
|
79
|
+
change: (_values: import('./interface').TransferValue[], _type: import('./interface').TransferType, _movedValues: import('./interface').TransferValue[]) => true;
|
|
80
|
+
select: (_sourceSelected: import('./interface').TransferValue[], _targetSelected: import('./interface').TransferValue[]) => true;
|
|
81
|
+
search: (_value: string, _type: import('./interface').TransferType) => true;
|
|
82
|
+
scroll: (_event: Event, _type: import('./interface').TransferType) => true;
|
|
83
|
+
}, import('vue').PublicProps, {
|
|
84
|
+
error: boolean;
|
|
85
|
+
disabled: boolean;
|
|
86
|
+
loading: boolean;
|
|
87
|
+
data: import('./interface').TransferItem[];
|
|
88
|
+
pagination: boolean | import('./interface').TransferPagination;
|
|
89
|
+
defaultValue: import('./interface').TransferValue[];
|
|
90
|
+
modelValue: import('./interface').TransferValue[];
|
|
91
|
+
selectedKeys: import('./interface').TransferValue[];
|
|
92
|
+
defaultSelectedKeys: import('./interface').TransferValue[];
|
|
93
|
+
simple: boolean;
|
|
94
|
+
operations: string[];
|
|
95
|
+
oneWay: boolean;
|
|
96
|
+
showSearch: boolean;
|
|
97
|
+
showSelectAll: boolean;
|
|
98
|
+
targetOrder: "append" | "original";
|
|
99
|
+
}, true, {}, import('vue').SlotsType<import('./interface').TransferSlots>, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, any, import('vue').ComponentProvideOptions, {
|
|
100
|
+
P: {};
|
|
101
|
+
B: {};
|
|
102
|
+
D: {};
|
|
103
|
+
C: {};
|
|
104
|
+
M: {};
|
|
105
|
+
Defaults: {};
|
|
106
|
+
}, Readonly<import('vue').ExtractPropTypes<{
|
|
107
|
+
data: {
|
|
108
|
+
type: import('vue').PropType<import('./interface').TransferItem[]>;
|
|
109
|
+
default: () => never[];
|
|
110
|
+
};
|
|
111
|
+
modelValue: {
|
|
112
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
113
|
+
default: undefined;
|
|
114
|
+
};
|
|
115
|
+
defaultValue: {
|
|
116
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
117
|
+
default: () => never[];
|
|
118
|
+
};
|
|
119
|
+
selectedKeys: {
|
|
120
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
121
|
+
default: undefined;
|
|
122
|
+
};
|
|
123
|
+
defaultSelectedKeys: {
|
|
124
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
125
|
+
default: () => never[];
|
|
126
|
+
};
|
|
127
|
+
disabled: {
|
|
128
|
+
type: BooleanConstructor;
|
|
129
|
+
default: boolean;
|
|
130
|
+
};
|
|
131
|
+
loading: {
|
|
132
|
+
type: BooleanConstructor;
|
|
133
|
+
default: boolean;
|
|
134
|
+
};
|
|
135
|
+
error: {
|
|
136
|
+
type: BooleanConstructor;
|
|
137
|
+
default: boolean;
|
|
138
|
+
};
|
|
139
|
+
simple: {
|
|
140
|
+
type: BooleanConstructor;
|
|
141
|
+
default: boolean;
|
|
142
|
+
};
|
|
143
|
+
oneWay: {
|
|
144
|
+
type: BooleanConstructor;
|
|
145
|
+
default: boolean;
|
|
146
|
+
};
|
|
147
|
+
showSearch: {
|
|
148
|
+
type: BooleanConstructor;
|
|
149
|
+
default: boolean;
|
|
150
|
+
};
|
|
151
|
+
showSelectAll: {
|
|
152
|
+
type: BooleanConstructor;
|
|
153
|
+
default: boolean;
|
|
154
|
+
};
|
|
155
|
+
title: import('vue').PropType<string[]>;
|
|
156
|
+
operations: {
|
|
157
|
+
type: import('vue').PropType<string[]>;
|
|
158
|
+
default: () => never[];
|
|
159
|
+
};
|
|
160
|
+
searchPlaceholder: StringConstructor;
|
|
161
|
+
filterOption: import('vue').PropType<(input: string, item: import('./interface').TransferItem, type: import('./interface').TransferType) => boolean>;
|
|
162
|
+
targetOrder: {
|
|
163
|
+
type: import('vue').PropType<"original" | "append">;
|
|
164
|
+
default: string;
|
|
165
|
+
};
|
|
166
|
+
listStyle: import('vue').PropType<import('vue').CSSProperties>;
|
|
167
|
+
pagination: {
|
|
168
|
+
type: import('vue').PropType<boolean | import('./interface').TransferPagination>;
|
|
169
|
+
default: boolean;
|
|
170
|
+
};
|
|
171
|
+
virtualListProps: import('vue').PropType<import('../virtual-list-v2/interface').VirtualListProps>;
|
|
172
|
+
}>> & Readonly<{
|
|
173
|
+
onSearch?: ((_value: string, _type: import('./interface').TransferType) => any) | undefined;
|
|
174
|
+
onSelect?: ((_sourceSelected: import('./interface').TransferValue[], _targetSelected: import('./interface').TransferValue[]) => any) | undefined;
|
|
175
|
+
onChange?: ((_values: import('./interface').TransferValue[], _type: import('./interface').TransferType, _movedValues: import('./interface').TransferValue[]) => any) | undefined;
|
|
176
|
+
onScroll?: ((_event: Event, _type: import('./interface').TransferType) => any) | undefined;
|
|
177
|
+
"onUpdate:modelValue"?: ((_values: import('./interface').TransferValue[]) => any) | undefined;
|
|
178
|
+
"onUpdate:selectedKeys"?: ((_values: import('./interface').TransferValue[]) => any) | undefined;
|
|
179
|
+
}>, () => VNode, {}, {}, {}, {
|
|
180
|
+
error: boolean;
|
|
181
|
+
disabled: boolean;
|
|
182
|
+
loading: boolean;
|
|
183
|
+
data: import('./interface').TransferItem[];
|
|
184
|
+
pagination: boolean | import('./interface').TransferPagination;
|
|
185
|
+
defaultValue: import('./interface').TransferValue[];
|
|
186
|
+
modelValue: import('./interface').TransferValue[];
|
|
187
|
+
selectedKeys: import('./interface').TransferValue[];
|
|
188
|
+
defaultSelectedKeys: import('./interface').TransferValue[];
|
|
189
|
+
simple: boolean;
|
|
190
|
+
operations: string[];
|
|
191
|
+
oneWay: boolean;
|
|
192
|
+
showSearch: boolean;
|
|
193
|
+
showSelectAll: boolean;
|
|
194
|
+
targetOrder: "append" | "original";
|
|
195
|
+
}>;
|
|
196
|
+
__isFragment?: never;
|
|
197
|
+
__isTeleport?: never;
|
|
198
|
+
__isSuspense?: never;
|
|
199
|
+
} & import('vue').ComponentOptionsBase<Readonly<import('vue').ExtractPropTypes<{
|
|
200
|
+
data: {
|
|
201
|
+
type: import('vue').PropType<import('./interface').TransferItem[]>;
|
|
202
|
+
default: () => never[];
|
|
203
|
+
};
|
|
204
|
+
modelValue: {
|
|
205
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
206
|
+
default: undefined;
|
|
207
|
+
};
|
|
208
|
+
defaultValue: {
|
|
209
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
210
|
+
default: () => never[];
|
|
211
|
+
};
|
|
212
|
+
selectedKeys: {
|
|
213
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
214
|
+
default: undefined;
|
|
215
|
+
};
|
|
216
|
+
defaultSelectedKeys: {
|
|
217
|
+
type: import('vue').PropType<import('./interface').TransferValue[]>;
|
|
218
|
+
default: () => never[];
|
|
219
|
+
};
|
|
220
|
+
disabled: {
|
|
221
|
+
type: BooleanConstructor;
|
|
222
|
+
default: boolean;
|
|
223
|
+
};
|
|
224
|
+
loading: {
|
|
225
|
+
type: BooleanConstructor;
|
|
226
|
+
default: boolean;
|
|
227
|
+
};
|
|
228
|
+
error: {
|
|
229
|
+
type: BooleanConstructor;
|
|
230
|
+
default: boolean;
|
|
231
|
+
};
|
|
232
|
+
simple: {
|
|
233
|
+
type: BooleanConstructor;
|
|
234
|
+
default: boolean;
|
|
235
|
+
};
|
|
236
|
+
oneWay: {
|
|
237
|
+
type: BooleanConstructor;
|
|
238
|
+
default: boolean;
|
|
239
|
+
};
|
|
240
|
+
showSearch: {
|
|
241
|
+
type: BooleanConstructor;
|
|
242
|
+
default: boolean;
|
|
243
|
+
};
|
|
244
|
+
showSelectAll: {
|
|
245
|
+
type: BooleanConstructor;
|
|
246
|
+
default: boolean;
|
|
247
|
+
};
|
|
248
|
+
title: import('vue').PropType<string[]>;
|
|
249
|
+
operations: {
|
|
250
|
+
type: import('vue').PropType<string[]>;
|
|
251
|
+
default: () => never[];
|
|
252
|
+
};
|
|
253
|
+
searchPlaceholder: StringConstructor;
|
|
254
|
+
filterOption: import('vue').PropType<(input: string, item: import('./interface').TransferItem, type: import('./interface').TransferType) => boolean>;
|
|
255
|
+
targetOrder: {
|
|
256
|
+
type: import('vue').PropType<"original" | "append">;
|
|
257
|
+
default: string;
|
|
258
|
+
};
|
|
259
|
+
listStyle: import('vue').PropType<import('vue').CSSProperties>;
|
|
260
|
+
pagination: {
|
|
261
|
+
type: import('vue').PropType<boolean | import('./interface').TransferPagination>;
|
|
262
|
+
default: boolean;
|
|
263
|
+
};
|
|
264
|
+
virtualListProps: import('vue').PropType<import('../virtual-list-v2/interface').VirtualListProps>;
|
|
265
|
+
}>> & Readonly<{
|
|
266
|
+
onSearch?: ((_value: string, _type: import('./interface').TransferType) => any) | undefined;
|
|
267
|
+
onSelect?: ((_sourceSelected: import('./interface').TransferValue[], _targetSelected: import('./interface').TransferValue[]) => any) | undefined;
|
|
268
|
+
onChange?: ((_values: import('./interface').TransferValue[], _type: import('./interface').TransferType, _movedValues: import('./interface').TransferValue[]) => any) | undefined;
|
|
269
|
+
onScroll?: ((_event: Event, _type: import('./interface').TransferType) => any) | undefined;
|
|
270
|
+
"onUpdate:modelValue"?: ((_values: import('./interface').TransferValue[]) => any) | undefined;
|
|
271
|
+
"onUpdate:selectedKeys"?: ((_values: import('./interface').TransferValue[]) => any) | undefined;
|
|
272
|
+
}>, () => VNode, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
273
|
+
'update:modelValue': (_values: import('./interface').TransferValue[]) => true;
|
|
274
|
+
'update:selectedKeys': (_values: import('./interface').TransferValue[]) => true;
|
|
275
|
+
change: (_values: import('./interface').TransferValue[], _type: import('./interface').TransferType, _movedValues: import('./interface').TransferValue[]) => true;
|
|
276
|
+
select: (_sourceSelected: import('./interface').TransferValue[], _targetSelected: import('./interface').TransferValue[]) => true;
|
|
277
|
+
search: (_value: string, _type: import('./interface').TransferType) => true;
|
|
278
|
+
scroll: (_event: Event, _type: import('./interface').TransferType) => true;
|
|
279
|
+
}, string, {
|
|
280
|
+
error: boolean;
|
|
281
|
+
disabled: boolean;
|
|
282
|
+
loading: boolean;
|
|
283
|
+
data: import('./interface').TransferItem[];
|
|
284
|
+
pagination: boolean | import('./interface').TransferPagination;
|
|
285
|
+
defaultValue: import('./interface').TransferValue[];
|
|
286
|
+
modelValue: import('./interface').TransferValue[];
|
|
287
|
+
selectedKeys: import('./interface').TransferValue[];
|
|
288
|
+
defaultSelectedKeys: import('./interface').TransferValue[];
|
|
289
|
+
simple: boolean;
|
|
290
|
+
operations: string[];
|
|
291
|
+
oneWay: boolean;
|
|
292
|
+
showSearch: boolean;
|
|
293
|
+
showSelectAll: boolean;
|
|
294
|
+
targetOrder: "append" | "original";
|
|
295
|
+
}, {}, string, import('vue').SlotsType<import('./interface').TransferSlots>, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & {
|
|
296
|
+
install(app: import('vue').App): void;
|
|
297
|
+
};
|
|
298
|
+
export type TransferInstance = InstanceType<typeof Transfer>;
|
|
299
|
+
export default Transfer;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { CSSProperties, VNodeChild } from 'vue';
|
|
2
|
+
import { VirtualListProps } from '../virtual-list-v2/interface';
|
|
3
|
+
export type TransferValue = string | number;
|
|
4
|
+
export type TransferType = 'source' | 'target';
|
|
5
|
+
export interface TransferItem {
|
|
6
|
+
value: TransferValue;
|
|
7
|
+
label: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
[key: string]: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface TransferPagination {
|
|
12
|
+
/** 每页条数,默认 10 */
|
|
13
|
+
pageSize?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface TransferProps {
|
|
16
|
+
data?: TransferItem[];
|
|
17
|
+
modelValue?: TransferValue[];
|
|
18
|
+
defaultValue?: TransferValue[];
|
|
19
|
+
selectedKeys?: TransferValue[];
|
|
20
|
+
defaultSelectedKeys?: TransferValue[];
|
|
21
|
+
disabled?: boolean;
|
|
22
|
+
loading?: boolean;
|
|
23
|
+
error?: boolean;
|
|
24
|
+
simple?: boolean;
|
|
25
|
+
oneWay?: boolean;
|
|
26
|
+
showSearch?: boolean;
|
|
27
|
+
showSelectAll?: boolean;
|
|
28
|
+
title?: string[];
|
|
29
|
+
operations?: string[];
|
|
30
|
+
searchPlaceholder?: string;
|
|
31
|
+
filterOption?: (inputValue: string, item: TransferItem, type: TransferType) => boolean;
|
|
32
|
+
targetOrder?: 'original' | 'append';
|
|
33
|
+
listStyle?: CSSProperties;
|
|
34
|
+
pagination?: boolean | TransferPagination;
|
|
35
|
+
virtualListProps?: VirtualListProps;
|
|
36
|
+
}
|
|
37
|
+
export interface TransferListSlotProps {
|
|
38
|
+
type: TransferType;
|
|
39
|
+
/** 搜索过滤后的全部数据 */
|
|
40
|
+
data: TransferItem[];
|
|
41
|
+
/** 当前页数据,未分页时等于 data */
|
|
42
|
+
pageData: TransferItem[];
|
|
43
|
+
/** 本侧有效勾选值,包含搜索隐藏项 */
|
|
44
|
+
selectedKeys: TransferValue[];
|
|
45
|
+
disabled: boolean;
|
|
46
|
+
onSelect: (value: TransferValue, checked: boolean) => void;
|
|
47
|
+
onSelectAll: (values: TransferValue[], checked: boolean) => void;
|
|
48
|
+
onMove: (values: TransferValue[]) => void;
|
|
49
|
+
}
|
|
50
|
+
export interface TransferTitleSlotProps {
|
|
51
|
+
type: TransferType;
|
|
52
|
+
title: string;
|
|
53
|
+
countTotal: number;
|
|
54
|
+
countSelected: number;
|
|
55
|
+
searchValue: string;
|
|
56
|
+
checked: boolean;
|
|
57
|
+
indeterminate: boolean;
|
|
58
|
+
disabled: boolean;
|
|
59
|
+
onSelectAllChange: (checked: boolean) => void;
|
|
60
|
+
}
|
|
61
|
+
export interface TransferItemSlotProps {
|
|
62
|
+
item: TransferItem;
|
|
63
|
+
type: TransferType;
|
|
64
|
+
selected: boolean;
|
|
65
|
+
disabled: boolean;
|
|
66
|
+
}
|
|
67
|
+
export interface TransferSlots {
|
|
68
|
+
item?: (props: TransferItemSlotProps) => VNodeChild;
|
|
69
|
+
source?: (props: TransferListSlotProps) => VNodeChild;
|
|
70
|
+
target?: (props: TransferListSlotProps) => VNodeChild;
|
|
71
|
+
'source-title'?: (props: TransferTitleSlotProps) => VNodeChild;
|
|
72
|
+
'target-title'?: (props: TransferTitleSlotProps) => VNodeChild;
|
|
73
|
+
footer?: (props: TransferListSlotProps) => VNodeChild;
|
|
74
|
+
empty?: (props: {
|
|
75
|
+
type: TransferType;
|
|
76
|
+
searchValue: string;
|
|
77
|
+
}) => VNodeChild;
|
|
78
|
+
'to-target-icon'?: () => VNodeChild;
|
|
79
|
+
'to-source-icon'?: () => VNodeChild;
|
|
80
|
+
}
|