import React from "react"; import { TableAddon, RowRenderContext } from "../TableProps"; import { ChangeContext, ControlledProps } from "../../form/controlled"; import { CheckTreeRelation } from "../../checktree"; export interface SelectableChangeContext extends ChangeContext { /** * 当前被改变项 Key * * **多层展开表格下子行只能获取到 `recordKey`, 无法获取行数据** * * @since 2.7.2 */ recordKey: Record; /** * 当前被改变项是否选中 * @since 2.7.2 */ checked: boolean; /** * 当前被改变项数据 */ record: Record; /** * 被改变数据 */ selectedRecords: Record[]; /** * 发生变化的选项的更多信息 */ check: { name?: string; value?: boolean; all?: boolean; }; } /** * `selectable` 插件用于支持表格可选择行的样式及操作。 */ export interface SelectableOptions extends ControlledProps> { /** * 不支持非受控模式 */ defaultValue?: never; /** * 提供 `relations` 属性,则会按照树状选择逻辑进行 */ relations?: CheckTreeRelation; /** * 提供 `all` 属性来支持全选 * 给定字符串可以用作全选项的 `key` */ all?: boolean | string; /** * 如果开启了全选支持,则可以指定哪些记录从全选的范围内排除 * * - 默认为 `disabled` 可以排除禁用的记录 * - 提供回调则自定义哪些记录应该排除,对于应该排除的记录,应该返回 `true` * * @default "disabled" */ shouldRecordExcludeFromAll?: "disabled" | ((record: any) => boolean); /** * 提供一个列的 `key`,将选择组件插入到一个目标列 * * 默认在最前新建一列插入 */ targetColumnKey?: string; /** * **\[Deprecated\]** 请使用 `indentable` 插件代替 * * @deprecated */ indent?: number; /** * 是否整行可选 */ rowSelect?: boolean; /** * 列宽度,可以指定 CSS 属性或数字 (单位:px) * @default 26 */ width?: string | number; /** * **高级用法** * 更改该插件的在每行的渲染内容,`element` 为默认渲染内容,`context` 中包含该行数据相关信息 * @default x => x */ render?: (element: JSX.Element, context: RowRenderContext) => React.ReactNode; /** * 指定行的选择是否可用 * * - 使用 Table 中的 `rowDisabled` 可将整行置灰并禁用选择 * * - `2.5.0` 新增 `record` 返回,但展开行无法获取该值 * * @default () => true */ rowSelectable?: (rowKey: string, context: { parent: string; children: string[]; record?: Record; }) => boolean; } export declare function selectable(options: SelectableOptions): TableAddon;