<script>
/**
 * SdValuePicker的数据源：接口定义
 * @displayName SdPickerSourceInterface 数据源-接口
 */
export default {
  name: 'SdPickerSourceInterface',
  props: {
    /**
     * 备选项label字段名
     */
    optionLabel: {
      type: String,
      default: 'name',
    },
    /**
     * 备选项value字段名
     */
    optionValue: {
      type: String,
      default: 'id',
    },
    /**
     * <p>备选项每行的渲染函数</p>
     * <pre>(item) => vNode|string</pre>
     */
    render: {
      type: Function,
      default: undefined,
    },
    /**
     * 单选
     */
    single: {
      type: Boolean,
      default: false,
    },
    /**
     * 右侧已选中的值
     */
    targetKeys: {
      type: Array,
      default: undefined,
    },
    /**
     * 左侧已选中的值
     */
    selectedKeys: {
      type: Array,
      default: undefined,
    },
    /**
     * 选中节点的方法
     */
    itemSelect: {
      type: Function,
      default: undefined,
    },
    /**
     * 更新数据源
     */
    updateDataSource: {
      type: Function,
      default: undefined,
    },
    /**
     * SdValuePicker传递过来的数据源，不要通过这个prop初始化数据
     */
    dataSource: {
      type: Array,
      default: undefined,
    },
    /**
     * 备选项双击的回调
     */
    itemDblClick: {
      type: Function,
      default: undefined,
    },
    /**
     * 搜索条件
     * @since 8.0.2
     */
    searchValue: {
      type: String,
      default: undefined,
    },
    /**
     * 更新是否显示搜索
     * @since 8.0.2
     */
    updateShowSearch: {
      type: Function,
      default: undefined,
    },
    /**
     * 禁用的候选项
     * @since 8.0.8
     */
    disabledKeys: {
      type: Array,
      default: () => [],
    },
  },
}
</script>

<docs>
[SdValuePicker 值选择器](#sdvaluepicker) 可以与多种数据源配合使用，系统默认提供了两种：[列表数据源](#sdpickersourcelist) 和 [树形数据源](#sdpickersourcetree)

除了这两种数据源以外，还可以定制出更多的数据源类型

SdValuePicker 会把接口定义中的所有prop，通过 scoped slot 的形式传递给内部的数据源（下面代码中的`scope`）

```html
<sd-value-picker>
  <template v-slot="scope">
    <sd-picker-source-list title="列表" icon="apple" v-bind="{ loadListData, ...scope }" />
  </template>
</sd-value-picker>
```
</docs>
