Skip to content

Transfer 穿梭框

YhTransfer 用于在两个列表之间移动数据项,适合权限分配、角色绑定和双栏选择等场景。

基础用法

列表 1共 4 项
  • California
  • Maryland
  • Florida
  • Colorado
列表 2共 2 项
  • Illinois
  • Texas
基础用法

过滤

启用 filterable 后可在左右面板顶部显示搜索框,并通过 filter-method 自定义匹配逻辑。

列表 1共 6 项
  • California
  • Illinois
  • Maryland
  • Texas
  • Florida
  • Colorado
列表 2共 0 项
无数据
过滤

字段映射

当业务数据字段名不是默认的 keylabeldisabled 时,可通过 props 指定别名映射。

列表 1共 3 项
  • 研发部
  • 人事部
  • 财务部
列表 2共 1 项
  • 市场部
字段映射

自定义内容与底部插槽

可通过默认项插槽以及左右面板的 header / empty / footer 插槽扩展业务内容与操作区。已声明的 render-content 属性当前未被运行时模板消费。

列表 1共 6 项
  • 1 - California
  • 2 - Illinois
  • 3 - Maryland
  • 4 - Texas
  • 5 - Florida
  • 6 - Colorado
列表 2共 0 项
无数据
自定义内容与底部插槽

虚拟滚动

当候选项较多时,可启用 virtual,并结合 heightitem-height 控制面板渲染窗口。

列表 1共 300 项
  • Option 1
  • Option 2
  • Option 3
  • Option 4
  • Option 5
  • Option 6
  • Option 7
  • Option 8
  • Option 9
  • Option 10
  • Option 11
  • Option 12
  • Option 13
  • Option 14
列表 2共 0 项
无数据
虚拟滚动

在 Nuxt 中使用

启用 YH-UI Nuxt 模块后,可直接在页面与组件中使用 YhTransfer。列表数据、默认选中值和自定义标题可参与 SSR 首屏渲染;用户勾选、搜索和移动按钮等交互会在客户端 hydration 后继续生效。

列表 1共 4 项
  • California
  • Maryland
  • Florida
  • Colorado
列表 2共 2 项
  • Illinois
  • Texas
在 Nuxt 中使用

API

Props

名称说明类型默认值
model-value / v-model右侧目标列表中已选项的 key 集合TransferKey[][]
data数据源TransferData[][]
filterable是否开启过滤booleanfalse
filter-method自定义过滤方法(query: string, item: TransferData) => booleanundefined
filter-placeholder搜索框占位文案;未传入时回退到 localestringundefined
target-order右侧列表排列策略'original' | 'push' | 'unshift''original'
titles左右列表标题数组string[][]
button-texts中间操作按钮文案数组string[][]
render-content已声明的自定义列表项渲染函数。当前仅透传到面板 props,面板模板未消费该配置(h, data) => VNode | stringundefined
left-default-checked左侧面板初始勾选项TransferKey[][]
right-default-checked右侧面板初始勾选项TransferKey[][]
props数据字段别名映射{ key?: string; label?: string; disabled?: string }undefined
disabled是否禁用整个组件booleanfalse
size组件尺寸'large' | 'default' | 'small''default'
validate-event兼容性保留属性。当前 Transfer 实现未消费该配置来触发表单校验事件booleantrue
virtual是否开启虚拟滚动booleanfalse
item-height虚拟滚动单项高度number40
height面板高度number280
left-title左侧面板标题stringundefined
right-title右侧面板标题stringundefined
show-all-checkbox已声明的全选入口显示属性。当前面板头部仍会渲染全选入口,不受该值控制booleantrue
empty-text两侧统一空状态文案stringundefined
left-empty-text左侧面板空状态文案stringundefined
right-empty-text右侧面板空状态文案stringundefined
theme-overrides组件级主题覆盖ComponentThemeVarsundefined

Events

名称说明参数
update:modelValue目标列表 key 集合变化时触发(value: TransferKey[])
change数据从左向右或从右向左移动后触发(value: TransferKey[], direction: 'left' | 'right', movedKeys: TransferKey[])
left-check-change左侧面板勾选变化时触发(value: TransferKey[], movedKeys?: TransferKey[])
right-check-change右侧面板勾选变化时触发(value: TransferKey[], movedKeys?: TransferKey[])

Slots

名称说明参数
default自定义列表项内容{ option: TransferData }
buttons自定义中间操作按钮区域{ moveToLeft: () => void; moveToRight: () => void; leftChecked: TransferKey[]; rightChecked: TransferKey[] }
left-header左侧面板头部内容-
right-header右侧面板头部内容-
left-empty左侧面板空状态内容-
right-empty右侧面板空状态内容-
left-footer左侧面板底部内容-
right-footer右侧面板底部内容-

Expose

名称说明类型
clearLeftChecked清空左侧面板勾选状态() => void
clearRightChecked清空右侧面板勾选状态() => void
leftPanel左侧面板实例引用Ref<TransferPanelExpose | undefined>
rightPanel右侧面板实例引用Ref<TransferPanelExpose | undefined>

主题变量

YhTransfer 支持 themeOverrides,但当前未定义组件专属 CSS 变量,主要消费全局主题令牌与表单/文本色板。

类型导出

名称说明
YhTransferPropsYhTransfer props 类型
YhTransferEmitsYhTransfer emits 类型
YhTransferExposeYhTransfer expose 类型
YhTransferPanelExpose面板 expose 类型
YhTransferInstance穿梭框实例类型
YhTransferPanelInstance面板实例类型
TransferData数据项类型
TransferKey数据 key 类型
TransferDirection移动方向类型
TransferSize尺寸类型
TransferPropsAlias字段映射配置类型
TransferFilterMethod过滤方法类型
TransferRenderContent自定义渲染函数类型

Released under the MIT License.