docs_vue2/one/docs/components/transfer.md
2020-08-13 11:47:56 +08:00

171 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Transfer <small>穿梭框</small>
## 示例
### 尺寸
可选的尺寸 `ui` 属性值:`s`/`m`。
[[ demo src="/demo/transfer/size.vue" ]]
### 无搜索
[[ demo src="/demo/transfer/no-search.vue" ]]
### 自定义搜索
[[ demo src="/demo/transfer/custom-search.vue" ]]
### 扁平输出树形数据
[[ demo src="/demo/transfer/flat.vue" ]]
## API
### 属性
| 名称 | 类型 | 默认值 | 描述 |
| -- | -- | -- | -- |
| `ui` | `string=` | - | [^ui] |
| `datasource` | `Array<Object>` | `[]` | [^datasource] |
| `searchable` | `boolean` | `true` | 是否允许搜索。 |
| `filter` | `function` | 见描述 | [^filter] |
| `selected` | `Array` | `[]` | [^selected] |
| `candidate-placeholder` | `string` | - | 待选区内搜索框的占位文本。 |
| `selected-placeholder` | `string` | - | 已选区内搜索框的占位文本。 |
| `selected-show-mode` | `string` | `'tree'` | [^selected-show-mode] |
| `keys` | `string|function` | `'value'` | [^keys] |
^^^ui
预设样式。
+++枚举值
| 值 | 描述 |
| -- | -- |
| `s` | 小尺寸样式。 |
| `m` | 中尺寸样式。 |
+++
^^^
^^^datasource
数据源数组,每个项目类型为 `{label, value, disabled, children, ...}`
+++字段详情
| 名称 | 类型 | 描述 |
| -- | -- | -- |
| `label` | `string` | 项目的文字描述。 |
| `value` | `string` | 项目对应的值。 |
| `disabled` | `boolean=` | 项目是否被禁用。 |
| `children` | `Array<Object>=` | 项目的子项目数组,数组项类型同 `datasource` 数组项。 |
+++
^^^
^^^filter
搜索过滤函数,签名为 `function(from, keyword, item, index, datasource): boolean`。返回值为 `false` 的项目将被从结果中过滤掉。
+++参数详情
| 名称 | 类型 | 描述 |
| -- | -- | -- |
| `from` | `string` | 搜索来源,可选枚举值:`'candidate'`、`'selected'`。`'candidate'` 表示是备选列表触发的搜索,`'selected'` 表示是已选列表触发的搜索。 |
| `keyword` | `string` | 搜索关键词。 |
| `item` | `Object` | 当前遍历到的数据项。 |
| `index` | `number` | 当前数据项在兄弟项目中的索引。 |
| `datasource` | `Array<Object>` | 与 `datasource` 属性一致。 |
+++
+++默认值
```js
import { includes } from 'lodash'
function (keyword, { label }) {
return includes(label, keyword)
}
```
+++
^^^
^^^selected
:::badges
`v-model`
:::
当前选中的值,是 `datasource` 中选中项的 `value` 集合(受 `keys` 属性影响)。
^^^
^^^selected-show-mode
选中框中选中项的显示方式。
+++枚举值
| 值 | 描述 |
| -- | -- |
| `tree` | 以树形结构展示。 |
| `flat` | 以扁平方式展示,数据展开成一维数组。 |
+++
^^^
^^^keys
自定义获取 `datasource` 中每一项的 `value` 值(具备唯一性)。可以用字符串的形式直接指定 `datasource` 中的哪个属性作为 `value`,也可以传递一个函数更加灵活地去生成 `value` 值。
若类型为 `function`,参数为 `(item: Object)``item` 是 `datasource` 中的一个节点的属性,返回值是添加到 `selected` 中的值。
^^^
### 插槽
| 名称 | 描述 |
| -- | -- |
| `candidate-head` | 待选区内顶部标题区域。 |
| `selected-head` | 已选区内顶部标题区域。 |
| `candidate-title` | 待选区内顶部标题文本区域。 |
| `selected-title` | 已选区内顶部标题文本区域。 |
| `candidate-no-data` | 数据源没数据时显示的内容。 |
| `selected-no-data` | 没有已选项时显示的内容。 |
| `candidate-item` | [^candidate-item] |
| `selected-item` | [^selected-item] |
| `candidate-item-label` | 待选区内每一项的文本区域。作用域参数与 `candidate-item` 一致。 |
| `selected-item-label` | 已选区内每一项的文本区域。当 `selected-show-mode``'tree'` 时作用域参数与 `selected-item` 一致。否则该插槽对应每个已选叶子项目的整条路径上的每个节点内容,此时作用域参数与 `candidate-item` 一致。 |
^^^candidate-item
待选区内的每一项内容。
+++作用域参数
| 名称 | 类型 | 描述 |
| -- | -- | -- |
| `label` | `string` | 项目的文本描述。 |
| `value` | `string` | 项目的值。 |
| `disabled` | `boolean=` | 项目是否被禁用。 |
| `children` | `Array<Object>=` | 项目的子项目数组,数组项类型同 `datasource` 数组项。 |
| `index` | `number` | 当前项目在同层级兄弟项中的索引。 |
| `depth` | `number` | 当前项目在树结构中的深度。 |
+++
^^^
^^^selected-item
已选区内的每一项内容。
+++作用域参数
如果 `Transfer` 组件的 `selected-show-mode``'tree'`,则作用域参数与 `candidate-item` 一致;如果 `selected-show-mode``'flat'`,则作用域参数为:
| 名称 | 类型 | 描述 |
| -- | -- | -- |
| `items` | `Array<Object>` | 包含从树形结构的根项目到叶子项目的路径。数组项类型与 `datasource` 项目相同。 |
| `index` | `number` | 当前项目在展开数组中的索引。 |
+++
^^^
### 事件
| 名称 | 描述 |
| -- | -- |
| `select` | 切换选择时触发。回调参数为 `(selected: Array<string>)`。`selected` 为已选项 `value` 字段集合。 |
### 图标
| 名称 | 描述 |
| -- | -- |
| `checked` | 已选状态。 |
| `select` | 待选择。 |
| `remove` | 移除。 |
| `expand` | 收起状态,点击后展开。 |
| `collapse` | 展开状态,点击后收起。 |
| `separator` | 当 `selected-show-mode``'flat'` 时层级间的分隔符。 |