ComponentsEnterpriseTransferList

TransferList

TransferList moves governed options between available and selected collections.

Dual listboxMulti-selectSearchMove selected/all2 orientations

Overview

Use TransferList when people must build a reviewed target collection from a larger governed set and see both membership states simultaneously.

Role permissions

Live preview

Select available permissions, move them, then select assigned permissions to move back.

Available permissions

3

Assigned permissions

1
PermissionAssignment.tsx
tsx
import { TransferList } from 'omverse-ui'
 
<TransferList options={permissions} value={assigned} onValueChange={setAssigned}
sourceTitle="Available permissions" targetTitle="Assigned permissions" />

Anatomy

TransferList combines named source and target panels, search, multi-selected options, and directional movement controls.

Available 3

✓ Analytics

□ Billing

Assigned 1

□ Security

12345
  1. 1
    Source panel

    Contains options not in the target collection.

  2. 2
    Search

    Filters one panel without changing membership.

  3. 3
    Option selection

    Stages enabled options for movement.

  4. 4
    Transfer controls

    Move selected or all visible enabled options.

  5. 5
    Target panel

    Shows the committed value collection.

When to use

Use for deliberate membership configuration where comparing available and selected sets prevents mistakes.

Recommended

  • Assign governed permissions

    Build roles from a known permission catalog.

  • Configure membership

    Move people, fields, or resources into a target set.

  • Review both states

    Keep available and assigned membership simultaneously visible.

When not to use

Prefer simpler selection when the set is small, ordered dragging matters, or choices are temporary filters.

Avoid

  • Do not choose one value

    Use Select or Combobox.

  • Do not apply temporary filters

    Use FilterBar or Checkbox.

  • Do not manage ordering alone

    Use a reorderable list when every item is already selected.

Variants

Panel treatment, size, and orientation adapt TransferList to full pages and narrow configuration surfaces.

Outlined

Default defined dual panels.

Filled

Tonal panels on dense pages.

Raised

Elevated configuration surface.

Orientation

Horizontal or vertically stacked panels.

States

Option selection is temporary staging; only movement changes committed target values.

StateTriggerVisual responseInteraction
AvailableValue outside targetSource optionSelect for movement
AssignedValue inside targetTarget optionSelect for removal
SelectedOption stagedPrimary row and checkTransfer enabled
FilteredPanel query enteredMatching options onlyMove all affects visible options
LoadingOptions resolvingPanel statusMovement disabled
DisabledOption unavailableReduced emphasisCannot stage or move

Behavior

TransferList owns staging, filtering, and movement while applications own retrieval, policy, persistence, and ordering.

Staging

Selecting an option does not move it.

Movement

Controls commit selected or visible enabled values.

Independent search

Each query filters only its panel.

Governed options

Disabled options remain visible but cannot move.

Accessibility

Two named multi-select listboxes and explicitly labeled movement buttons expose every operation without drag-and-drop.

KeyAction
TabMoves among search, options, and transfer controls.
EnterSpaceToggles the focused option or activates movement.
  • Give both panels distinct visible headings and listbox names.
  • Expose staged selection with aria-selected.
  • Name every directional control by source and destination.
  • Keep movement independent from visual direction in accessible labels.
  • State option counts and disabled availability in text.
  • Use vertical orientation when horizontal panels cannot remain usable.

Content guidelines

Panel and option labels should make membership direction and consequences obvious.

Name membership states

Use domain-specific panel headings.

ExampleAvailable permissions, Assigned permissions

Use parallel labels

Name every option at the same level.

ExampleAnalytics, Billing, Security

Add distinguishing context

Use descriptions when labels may be ambiguous.

ExampleManage invoices and plans

Name movement

Accessible controls should include destination.

ExampleMove selected to assigned

Examples

Vertical orientation supports narrow panels while retaining the same source-target model.

Vertical assignment

Live preview

Available members

2

Team members

1
TeamAssignment.tsx
tsx
<TransferList options={members} defaultValue={teamIds} orientation="vertical" size="sm" />

Props / API

TransferList extends div attributes; options define identity, label, description, and availability.

Props

PropTypeDefaultDescription
optionsreadonly TransferListOption[]requiredComplete governed option set.
valuereadonly string[]undefinedControlled values in target list.
defaultValuereadonly string[][]Initial target values.
onValueChange(values: readonly string[]) => voidundefinedRuns when target values change.
sourceTitleReactNode'Available'Source heading.
targetTitleReactNode'Selected'Target heading.
searchablebooleantrueEnables independent list search.
filterOption(option, query) => booleanlabel matchCustom option matching.
disabledbooleanfalseDisables selection and movement.
loadingbooleanfalseShows option resolution progress.
emptyStateReactNode'No options'Empty-list content.
variant'outlined' | 'filled' | 'raised''outlined'Controls panel treatment.
size'sm' | 'md' | 'lg''md'Controls panel height and density.
orientation'horizontal' | 'vertical''horizontal'Controls panel arrangement.