import { ArrayBaseMixins } from "@formily/antd-v5"; import { FieldDisplayTypes, GeneralField } from "@formily/core"; import { Schema } from "@formily/json-schema"; import { AgGridReactProps } from "ag-grid-react"; import React from "react"; /** * ArrayTable.Column 的 x-component-props 里 qc-ui 自己认的扩展属性; * 其余属性(width、headerName、pinned 等)按 AG-Grid 列定义处理。 * * @author nokecy */ interface ArrayTableColumnProps { /** 提交时必填的列头提示;由业务配置决定,不会把草稿字段改为必填。@author nokecy */ requiredMark?: boolean; /** * 表头分组名(多级表头,仅一级)。 * 相邻且 headerGroup 相同的列合并成一个列组,分组名作为组头; * 同名但不相邻的列各自成组;不写则该列不分组。 */ headerGroup?: string; /** * 默认隐藏:为 true 时该列首次出现时是隐藏的,用户可在列设置里打开,列方案(applyColumnState)优先。 * 对应 AG-Grid 的 initialHide。注意 hide 在 ArrayTable 里不生效(状态归列方案管),要默认隐藏请用它。 */ defaultHide?: boolean; } interface ObservableColumnSource { /** 当前 SchemaField 的组件表,用于读取业务组件的展示规则。@author nokecy */ components?: Record; field: GeneralField; columnProps: ArrayTableColumnProps & Record; schema: Schema; display: FieldDisplayTypes; name: string; } /** 公共明细表格的业务属性。@author nokecy */ export type ArrayTableProps = AgGridReactProps & { height?: number | string; gridKey: string; onRowDrag?: boolean; disabled?: boolean; /** 默认对配置标准删除入口的可编辑明细开放批量删除;false 可显式关闭。 */ batchRemove?: boolean; onRemove?: (index: number) => void; }; type ComposedArrayTable = React.FC> & ArrayBaseMixins & { Column?: any; }; export { ComposedArrayTable, ObservableColumnSource, ArrayTableColumnProps };