## トランスファー ### 基本的な使い方 :::demo データは `data` 属性を用いて転送に渡されます。データはオブジェクトの配列である必要があり、各オブジェクトは以下の属性を持つ必要があります。`key` はデータ項目の識別情報、`label` は表示されるテキスト、`disabled` はデータ項目が無効かどうかを示す。ターゲットリスト内の項目は `v-model` にバインドされた変数と同期しており、その変数の値はターゲット項目のキーの配列となる。したがって、ターゲットリストを初期状態で空にしたくない場合は、`v-model`を配列で初期化することができる。 ```html ``` ::: ### フィルタリング可能 データ項目の検索やフィルタリングができます。 :::demo フィルタモードを有効にするには、`filterable` 属性を `true` に設定する。デフォルトでは、`label` に検索キーワードが含まれている場合は検索結果に含まれる。また、`filter-method` 属性を用いて独自のフィルタメソッドを実装することもできる。これはメソッドを受け取り、キーワードが変更されるたびに検索キーワードと各データ項目をそれに渡す。あるデータ項目については、そのメソッドが真を返した場合、そのデータが検索結果リストに含まれる。 ```html ``` ::: ### カスタマイズ可能 リストのタイトル、ボタンのテキスト、データ項目のレンダリング機能、リストフッターのステータステキストの確認、リストフッターの内容をカスタマイズすることができます。 :::demo `title`, `button-texts`, `render-content`, `format` を使って、リストのタイトル、ボタンのテキスト、データ項目のレンダリング機能、リストヘッダのステータステキストのチェックをそれぞれカスタマイズします。さらに、スコープ付きスロットを使ってデータ項目をカスタマイズすることもできます。リストのフッターの内容には、2つの名前付きスロットが用意されています。`左フッター`と`右フッター`です。さらに、いくつかの項目を最初にチェックしたい場合は、`left-default-checked` と `right-default-checked` を使うことができます。最後に、この例では `change` イベントのデモを行います。このデモはJSX構文をサポートしていないので、jsfiddleでは実行できないことに注意してください。実際のプロジェクトでは、関連する依存関係が正しく設定されていれば `render-content` は動作します。 ```html ``` ::: ### プロップのエイリアス デフォルトでは、Transferはデータ項目の中から `key`, `label`, `disabled` を探します。データ項目に異なるキー名がある場合、`props` 属性を使ってエイリアスを定義することができます。 :::demo この例のデータ項目には `key` や `label` がなく、代わりに `value` と `desc` があります。そのため、`key`と`label`にエイリアスを設定する必要があります。 ```html ``` ::: ### 属性 | Attribute | Description | Type | Accepted Values | Default | |---------- |-------- |---------- |------------- |-------- | | model-value / v-model | バインディング値 | array | — | — | | data | データソース | array[{ key, label, disabled }] | — | [ ] | | filterable | 転送がフィルタリング可能かどうか | boolean | — | false | | filter-placeholder | フィルタ入力のプレースホルダ | string | — | Enter keyword | | filter-method | カスタムフィルタメソッド | function | — | — | | target-order | ターゲットリストの要素の順序を指定します。`original` に設定されている場合、要素はデータソースと同じ順序を保ちます。`push` に設定すると、新しく追加された要素はボトムに押し出されます。`unshift` に設定すると、新たに追加された要素はトップに挿入される。 | string | original / push / unshift | original | | titles | カスタムリストタイトル | array | — | ['List 1', 'List 2'] | | button-texts | カスタムボタンテキスト | array | — | [ ] | | render-content | データ項目のカスタムレンダリング関数 | function(h, option) | — | — | | format | リストヘッダの状態を確認するためのテキスト | object{noChecked, hasChecked} | — | { noChecked: '${checked}/${total}', hasChecked: '${checked}/${total}' } | | props | データソース用のプロップエイリアス | object{key, label, disabled} | — | — | | left-default-checked | 左リストの初期チェックデータ項目のキー配列 | array | — | [ ] | | right-default-checked | 右リストの初期チェックデータ項目のキー配列 | array | — | [ ] | ### スロット | Name | Description | |------|--------| | left-footer | 左リストフッターの内容 | | right-footer | 右リストフッターの内容 | ### スコープされたスロット | Name | Description | |------|--------| | — | データ項目のカスタムコンテンツ。スコープパラメータは { オプション } です。 | ### メソッド | Method | Description | Parameters | | ---- | ---- | ---- | | clearQuery | 特定のパネルのフィルタキーワードをクリア | 'left' / 'right' | ### イベント | Event Name | Description | Parameters | |---------- |-------- |---------- | | change | 右側のリストでデータ項目が変更された場合にトリガーされる | key array of current data items in the right list, transfer direction (left or right), moved item keys | | left-check-change | エンドユーザーが左リストのデータ項目のチェック状態を変更した場合にトリガーされます。 | key array of currently checked items, key array of items whose checked state have changed | | right-check-change | エンドユーザーが右のリスト内の任意のデータ項目のチェック状態を変更した場合にトリガーされます。 | key array of currently checked items, key array of items whose checked state have changed |