Skip to content

Transfer ​

Two lists and four move buttons. > and >> are brand primary. < and << are secondary outline. Search is on by default. On narrow screens the panels stack and the buttons sit in a row.

Demos ​

Columns

Header counts are checked / total. Disabled rows stay put. Search filters the visible labels and does not remove keys.

id, name

Empty target

Search off, titles, disabled

Inside a form item

API ​

Properties ​

NameTypeDefaultNotes
value / target-keyskey[][]Keys in the target list
options / dataTransferOption[][]{ label, value or key, disabled? }
source-title / target-titlestringlocalized來源 / Source, 目標 / Target
titles[string, string]—Overrides the two titles
show-search / filterablebooleantrueEither one can turn search off
source-filterable / target-filterablebooleaninherit
filter-placeholderstringlocalized搜尋 / Search
sizesm | md | lgmdRow and button height 28 / 34 / 40
disabledbooleanfalseOpacity 0.5

Events ​

NameDetail
change, update:value{ value, targetKeys, direction: 'source' | 'target', movedKeys }
select{ sourceSelectedKeys, targetSelectedKeys }
search{ direction, value }

direction is the list the keys moved to.

Parts ​

root, source-panel, target-panel, header, title, count, search, list, item, checkbox, empty, actions, button.

Slots ​

source-title, target-title, source-empty, target-empty. Empty copy defaults to「暫無資料」.

Virtual scroll, one-way mode, and custom item rendering are follow-ups.