interface.d.ts 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. /**
  2. * ColumnType which applied in antd: https://ant.design/components/table-cn/#Column
  3. * - defaultSortOrder
  4. * - filterDropdown
  5. * - filterDropdownVisible
  6. * - filtered
  7. * - filteredValue
  8. * - filterIcon
  9. * - filterMultiple
  10. * - filters
  11. * - sorter
  12. * - sortOrder
  13. * - sortDirections
  14. * - onFilter
  15. * - onFilterDropdownVisibleChange
  16. */
  17. import type { CSSProperties, Ref, TdHTMLAttributes } from 'vue';
  18. export declare type Key = number | string;
  19. export declare type FixedType = 'left' | 'right' | boolean;
  20. export declare type DefaultRecordType = any;
  21. export declare type TableLayout = 'auto' | 'fixed';
  22. export declare type RowClassName<RecordType> = (record: RecordType, index: number, indent: number) => string;
  23. export declare type TransformCellText<RecordType> = (opt: {
  24. text: any;
  25. column: ColumnType<RecordType>;
  26. record: any;
  27. index: number;
  28. }) => any;
  29. export interface CellType<RecordType = DefaultRecordType> {
  30. key?: Key;
  31. class?: string;
  32. style?: CSSProperties;
  33. column?: ColumnsType<RecordType>[number];
  34. colSpan?: number;
  35. rowSpan?: number;
  36. /** Only used for table header */
  37. hasSubColumns?: boolean;
  38. colStart?: number;
  39. colEnd?: number;
  40. }
  41. export interface RenderedCell<RecordType> {
  42. props?: CellType<RecordType>;
  43. children?: any;
  44. }
  45. export declare type DataIndex = string | number | readonly (string | number)[];
  46. export declare type CellEllipsisType = {
  47. showTitle?: boolean;
  48. } | boolean;
  49. interface ColumnSharedType<RecordType> {
  50. title?: any;
  51. key?: Key;
  52. class?: string;
  53. className?: string;
  54. fixed?: FixedType;
  55. customHeaderCell?: GetComponentProps<ColumnsType<RecordType>[number]>;
  56. ellipsis?: CellEllipsisType;
  57. align?: AlignType;
  58. customFilterDropdown?: boolean;
  59. /** @deprecated Please use `v-slot:filterIcon` `v-slot:bodyCell` `v-slot:headerCell` instead */
  60. slots?: {
  61. filterIcon?: string;
  62. filterDropdown?: string;
  63. customRender?: string;
  64. title?: string;
  65. };
  66. /**
  67. * @private Internal usage.
  68. *
  69. * !!! DO NOT USE IN PRODUCTION ENVIRONMENT !!!
  70. */
  71. __originColumn__?: any;
  72. }
  73. export interface ColumnGroupType<RecordType> extends ColumnSharedType<RecordType> {
  74. children: ColumnsType<RecordType>;
  75. }
  76. export declare type AlignType = 'left' | 'center' | 'right';
  77. export interface ColumnType<RecordType> extends ColumnSharedType<RecordType> {
  78. colSpan?: number;
  79. dataIndex?: DataIndex;
  80. customRender?: (opt: {
  81. value: any;
  82. text: any;
  83. record: RecordType;
  84. index: number;
  85. renderIndex: number;
  86. column: ColumnType<RecordType>;
  87. }) => any | RenderedCell<RecordType>;
  88. rowSpan?: number;
  89. width?: number | string;
  90. minWidth?: number;
  91. maxWidth?: number;
  92. resizable?: boolean;
  93. customCell?: GetComponentProps<RecordType>;
  94. /** @deprecated Please use `customCell` instead */
  95. onCellClick?: (record: RecordType, e: MouseEvent) => void;
  96. }
  97. export declare type ColumnsType<RecordType = unknown> = readonly (ColumnGroupType<RecordType> | ColumnType<RecordType>)[];
  98. export declare type GetRowKey<RecordType> = (record: RecordType, index?: number) => Key;
  99. export interface StickyOffsets {
  100. left: readonly number[];
  101. right: readonly number[];
  102. isSticky?: boolean;
  103. }
  104. export declare type AdditionalProps = TdHTMLAttributes & {
  105. colSpan?: number;
  106. rowSpan?: number;
  107. };
  108. export declare type GetComponentProps<DataType> = (data: DataType, index?: number, column?: ColumnType<any>) => AdditionalProps;
  109. export declare type CustomizeComponent = any;
  110. export declare type CustomizeScrollBody<RecordType> = (data: readonly RecordType[], info: {
  111. scrollbarSize: number;
  112. ref: Ref<{
  113. scrollLeft: number;
  114. }>;
  115. onScroll: (info: {
  116. currentTarget?: HTMLElement;
  117. scrollLeft?: number;
  118. }) => void;
  119. }) => any;
  120. export interface TableComponents<RecordType> {
  121. table?: CustomizeComponent;
  122. header?: {
  123. wrapper?: CustomizeComponent;
  124. row?: CustomizeComponent;
  125. cell?: CustomizeComponent;
  126. };
  127. body?: CustomizeScrollBody<RecordType> | {
  128. wrapper?: CustomizeComponent;
  129. row?: CustomizeComponent;
  130. cell?: CustomizeComponent;
  131. };
  132. }
  133. export declare type GetComponent = (path: readonly string[], defaultComponent?: CustomizeComponent) => CustomizeComponent;
  134. export declare type ExpandableType = false | 'row' | 'nest';
  135. export interface LegacyExpandableProps<RecordType> {
  136. expandedRowKeys?: Key[];
  137. defaultExpandedRowKeys?: Key[];
  138. expandedRowRender?: ExpandedRowRender<RecordType>;
  139. expandRowByClick?: boolean;
  140. expandIcon?: RenderExpandIcon<RecordType>;
  141. onExpand?: (expanded: boolean, record: RecordType) => void;
  142. onExpandedRowsChange?: (expandedKeys: Key[]) => void;
  143. defaultExpandAllRows?: boolean;
  144. indentSize?: number;
  145. /** @deprecated Please use `EXPAND_COLUMN` in `columns` directly */
  146. expandIconColumnIndex?: number;
  147. showExpandColumn?: boolean;
  148. expandedRowClassName?: RowClassName<RecordType>;
  149. childrenColumnName?: string;
  150. rowExpandable?: (record: RecordType) => boolean;
  151. }
  152. export declare type ExpandedRowRender<ValueType> = (opt: {
  153. record: ValueType;
  154. index: number;
  155. indent: number;
  156. expanded: boolean;
  157. }) => any;
  158. export interface RenderExpandIconProps<RecordType> {
  159. prefixCls: string;
  160. expanded: boolean;
  161. record: RecordType;
  162. expandable: boolean;
  163. onExpand: TriggerEventHandler<RecordType>;
  164. }
  165. export declare type RenderExpandIcon<RecordType> = (props: RenderExpandIconProps<RecordType>) => any;
  166. export interface ExpandableConfig<RecordType> {
  167. expandedRowKeys?: readonly Key[];
  168. defaultExpandedRowKeys?: readonly Key[];
  169. expandedRowRender?: ExpandedRowRender<RecordType>;
  170. expandRowByClick?: boolean;
  171. expandIcon?: RenderExpandIcon<RecordType>;
  172. onExpand?: (expanded: boolean, record: RecordType) => void;
  173. onExpandedRowsChange?: (expandedKeys: readonly Key[]) => void;
  174. defaultExpandAllRows?: boolean;
  175. indentSize?: number;
  176. /** @deprecated Please use `EXPAND_COLUMN` in `columns` directly */
  177. expandIconColumnIndex?: number;
  178. showExpandColumn?: boolean;
  179. expandedRowClassName?: RowClassName<RecordType>;
  180. childrenColumnName?: string;
  181. rowExpandable?: (record: RecordType) => boolean;
  182. columnWidth?: number | string;
  183. fixed?: FixedType;
  184. }
  185. export declare type PanelRender<RecordType> = (data: readonly RecordType[]) => any;
  186. export declare type TriggerEventHandler<RecordType> = (record: RecordType, event: MouseEvent) => void;
  187. export interface TableSticky {
  188. offsetHeader?: number;
  189. offsetSummary?: number;
  190. offsetScroll?: number;
  191. getContainer?: () => Window | HTMLElement;
  192. }
  193. export {};