UNPKG

cnd-components-mcp

Version:

An MCP service for Cnd components query | 一个减少 Cnd 组件代码生成幻觉的 MCP 服务,包含系统提示词、组件文档、API 文档、代码示例和更新日志查询

242 lines (201 loc) 16.3 kB
## 简介 穿梭框常用于多项信息选择场景,方便用户直观的对比待选项与已选项,其中待选项即可以被转移到已选项中(剪切),也可以被复制到已选项中(复制)。 ## 示例 ```tsx import React from 'react'; import { Transfer } from '@alicloud/console-components'; const labels = [ '默认项', '默认项', '默认项', '聚焦项', '默认项', '失效项', '默认项', ]; const getDataSource = () => { const result = []; for (let i = 0; i < 10; i++) { result.push({ label: labels[i], value: `${i}`, disabled: i === 5, }); } return result; }; const handleChange = (value, data, extra) => { console.log(value, data, extra); }; export default () => { return ( <Transfer mode="simple" defaultValue={['3', '2']} defaultLeftChecked={['1']} dataSource={getDataSource()} onChange={handleChange} titles={[ <span style={{ fontWeight: 500 }}>项目列表标题</span>, <span style={{ fontWeight: 500 }}>项目列表标题</span>, ]} /> ); }; export const meta = { title: '默认', describe: '基础用法,可通过titles定制两侧标题,mode属性控制选项模式。', }; ``` ```tsx import React from 'react'; import { Transfer } from '@alicloud/console-components'; const labels = [ '默认项', '默认项', '默认项', '聚焦项', '默认项', '失效项', '默认项', ]; const getDataSource = () => { const result = []; for (let i = 0; i < 10; i++) { result.push({ label: labels[i], value: `${i}`, disabled: i === 5, }); } return result; }; const handleChange = (value, data, extra) => { console.log(value, data, extra); }; export default () => { return ( <Transfer showSearch mode="simple" defaultValue={['3', '2']} defaultLeftChecked={['1']} dataSource={getDataSource()} onChange={handleChange} titles={[ <span style={{ fontWeight: 500 }}>项目列标题</span>, <span style={{ fontWeight: 500 }}>项目列标题</span>, ]} /> ); }; export const meta = { title: '带搜索', describe: '通过 showSearch 属性控制显示搜索框。', }; ``` ## API ### Transfer | 参数 | 说明 | 类型 | 默认值 | 是否必填 | | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- | ----------- | -------- | | mode | 移动选项模式 | 'normal' | 'simple' | 'normal' | | | dataSource | 数据源 | Array\<TransferDataItem> | \[] | | | value | (用于受控)当前值 | Array\<string> | - | | | defaultValue | (用于非受控)初始值 | Array\<string> | \[] | | | onChange | 值发生改变的时候触发的回调函数<br/><br/>**签名**:<br/>**参数**:<br/>*value*: 右面板值<br/>*data*: 右面板数据<br/>*extra*: 额外参数 | (value: Array\<string>, data: Array\<TransferDataItem>, extra: ExtraOptions) => void | - | | | onSelect | Item 被选中的时候触发的回调函数<br/><br/>**签名**:<br/>**参数**:<br/>*sourceSelectedValue*: 源面板选中的 Item 列表<br/>*targetSelectedValue*: 目标面板选中的 Item 列表<br/>*target*: 触发面板 'source' | 'target' | (<br/> sourceSelectedValue: Array\<string>,<br/> targetSelectedValue: Array\<string>,<br/> target: 'source' | 'target'<br/> ) => void | - | | | disabled | 是否禁用 | boolean | false | | | leftDisabled | 是否禁用左侧面板 | boolean | false | | | rightDisabled | 是否禁用右侧面板 | boolean | false | | | itemRender | 列表项渲染函数<br/><br/>**签名**:<br/>**参数**:<br/>*data*: 数据<br/>**返回值**:<br/>列表项内容 | (data: TransferDataItem) => React.ReactNode | - | | | showSearch | 左右面板是否显示搜索框 | boolean | \[leftPanel: boolean, rightPanel: boolean] | false | | | searchProps | 左右面板搜索框配置 | SearchProps | \[leftPanel: SearchProps, rightPanel: SearchProps] | - | | | filter | 自定义搜索函数<br/><br/>**签名**:<br/>**参数**:<br/>*searchedValue*: 搜索框输入的值<br/>*data*: 数据<br/>**返回值**:<br/>是否匹配到 | (searchedValue: string, data: TransferDataItem) => boolean | - | | | onSearch | 搜索框输入时触发的回调函数<br/><br/>**签名**:<br/>**参数**:<br/>*searchedValue*: 搜索框输入的值<br/>*position*: 搜索面板的位置 | (searchedValue: string, position: string) => void | - | | | useVirtual | 是否开启虚拟滚动 | boolean | - | | | searchPlaceholder | 搜索框占位符 | string | - | | | notFoundContent | 列表为空显示内容 | React.ReactNode | \[leftPanel: React.ReactNode, rightPanel: React.ReactNode] | 'Not Found' | | | titles | 左右面板标题 | \[leftPanel: React.ReactNode, rightPanel: React.ReactNode] | \[] | | | operations | 向右向左移动按钮显示内容 | \[leftPanel: React.ReactNode, rightPanel: React.ReactNode] | \[] | | | defaultLeftChecked | 左面板默认选中值 | Array\<string> | \[] | | | defaultRightChecked | 右面板默认选中值 | Array\<string> | \[] | | | listClassName | 左右面板列表自定义样式类名 | string | - | | | listStyle | 左右面板列表自定义样式对象 | React.CSSProperties | - | | | sortable | 是否允许拖拽排序 | boolean | false | | | onSort | 拖拽排序时触发的回调函数<br/><br/>**签名**:<br/>**参数**:<br/>*value*: 右面板值<br/>*position*: 拖拽的面板位置,值为:left 或 right | (value: Array\<string>, position: PositionType) => void | - | | | id | 请设置 id 以保证transfer的可访问性 | string | - | | | showCheckAll | 是否显示底部全选 checkbox | boolean | true | | | children | 接收 children 自定义渲染列表 | (props: TransferPanelProps) => React.ReactNode | - | | ### TransferDataItem ```typescript export type TransferDataItem = { label: string | React.ReactNode; value: string; title?: string; disabled?: boolean; children?: TransferDataItem[]; [key: string]: unknown; }; ``` ### PositionType ```typescript export type PositionType = 'left' | 'right'; ``` ### DragGapType ```typescript export type DragGapType = 'before' | 'after'; ``` ### ExtraOptions ```typescript export type ExtraOptions = { /** * 移动的方向,值为'left'或'right' * @en Move direction, 'left' or 'right' */ direction: PositionType; /** * 左面板值 * @en Data of left panel */ leftValue: string[]; /** * 左面板数据 * @en Data of left panel */ leftData: TransferDataItem[]; /** * 发生移动的数据 * @en Moved data */ movedData: TransferDataItem[]; /** * 发生移动的值 * @en Moved value */ movedValue: string[]; }; ``` ## 无障碍键盘操作指南 | 按键 | 说明 | | :--------- | :------------------------------------------------ | | Up Arrow | 获取当前项的前一项焦点 | | Down Arrow | 获取当前项的后一项焦点 | | Enter | 当前列表选中的项移动到另一个列表 | | SPACE | 选择/取消当前项或当前列表选中的项移动到另一个列表 | ## 更多示例 ```tsx ``` ```tsx ``` ```tsx ``` ```tsx ``` ```tsx ``` ```tsx ``` ```tsx ``` ```tsx ```