interface.d.ts 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. import type { GetRowKey, ColumnType as RcColumnType, RenderedCell as RcRenderedCell, ExpandableConfig, DefaultRecordType, FixedType } from '../vc-table/interface';
  2. import type { TooltipProps } from '../tooltip';
  3. import type { CheckboxProps } from '../checkbox';
  4. import type { PaginationProps } from '../pagination';
  5. import type { Breakpoint } from '../_util/responsiveObserve';
  6. import type { INTERNAL_SELECTION_ITEM } from './hooks/useSelection';
  7. import type { VueNode } from '../_util/type';
  8. import type { CSSProperties } from 'vue';
  9. export type { GetRowKey, ExpandableConfig };
  10. export declare type Key = string | number;
  11. export declare type RowSelectionType = 'checkbox' | 'radio';
  12. export declare type SelectionItemSelectFn = (currentRowKeys: Key[]) => void;
  13. export declare type ExpandType = null | 'row' | 'nest';
  14. export interface TableLocale {
  15. filterTitle?: string;
  16. filterConfirm?: any;
  17. filterReset?: any;
  18. filterEmptyText?: any;
  19. filterCheckall?: any;
  20. filterSearchPlaceholder?: any;
  21. emptyText?: any | (() => any);
  22. selectAll?: any;
  23. selectNone?: any;
  24. selectInvert?: any;
  25. selectionAll?: any;
  26. sortTitle?: string;
  27. expand?: string;
  28. collapse?: string;
  29. triggerDesc?: string;
  30. triggerAsc?: string;
  31. cancelSort?: string;
  32. }
  33. export declare type SortOrder = 'descend' | 'ascend' | null;
  34. declare const TableActions: ["paginate", "sort", "filter"];
  35. export declare type TableAction = typeof TableActions[number];
  36. export declare type CompareFn<T> = (a: T, b: T, sortOrder?: SortOrder) => number;
  37. export interface ColumnFilterItem {
  38. text: VueNode;
  39. value: string | number | boolean;
  40. children?: ColumnFilterItem[];
  41. }
  42. export interface ColumnTitleProps<RecordType> {
  43. /** @deprecated Please use `sorterColumns` instead. */
  44. sortOrder?: SortOrder;
  45. /** @deprecated Please use `sorterColumns` instead. */
  46. sortColumn?: ColumnType<RecordType>;
  47. sortColumns?: {
  48. column: ColumnType<RecordType>;
  49. order: SortOrder;
  50. }[];
  51. filters?: Record<string, string[]>;
  52. }
  53. export declare type ColumnTitle<RecordType> = VueNode | ((props: ColumnTitleProps<RecordType>) => VueNode);
  54. export declare type FilterValue = (Key | boolean)[];
  55. export declare type FilterKey = Key[] | null;
  56. export declare type FilterSearchType = boolean | ((input: string, record: {}) => boolean);
  57. export interface FilterConfirmProps {
  58. closeDropdown: boolean;
  59. }
  60. export interface FilterDropdownProps<RecordType> {
  61. prefixCls: string;
  62. setSelectedKeys: (selectedKeys: Key[]) => void;
  63. selectedKeys: Key[];
  64. confirm: (param?: FilterConfirmProps) => void;
  65. clearFilters?: () => void;
  66. filters?: ColumnFilterItem[];
  67. visible: boolean;
  68. column: ColumnType<RecordType>;
  69. }
  70. export interface ColumnType<RecordType = DefaultRecordType> extends RcColumnType<RecordType> {
  71. title?: ColumnTitle<RecordType>;
  72. sorter?: boolean | CompareFn<RecordType> | {
  73. compare?: CompareFn<RecordType>;
  74. /** Config multiple sorter order priority */
  75. multiple?: number;
  76. };
  77. sortOrder?: SortOrder;
  78. defaultSortOrder?: SortOrder;
  79. sortDirections?: SortOrder[];
  80. showSorterTooltip?: boolean | TooltipProps;
  81. filtered?: boolean;
  82. filters?: ColumnFilterItem[];
  83. filterDropdown?: VueNode | ((props: FilterDropdownProps<RecordType>) => VueNode);
  84. filterMultiple?: boolean;
  85. filteredValue?: FilterValue | null;
  86. defaultFilteredValue?: FilterValue | null;
  87. filterIcon?: VueNode | ((opt: {
  88. filtered: boolean;
  89. column: ColumnType;
  90. }) => VueNode);
  91. filterMode?: 'menu' | 'tree';
  92. filterSearch?: boolean;
  93. onFilter?: (value: string | number | boolean, record: RecordType) => boolean;
  94. filterDropdownVisible?: boolean;
  95. onFilterDropdownVisibleChange?: (visible: boolean) => void;
  96. responsive?: Breakpoint[];
  97. }
  98. export interface ColumnGroupType<RecordType> extends Omit<ColumnType<RecordType>, 'dataIndex'> {
  99. children: ColumnsType<RecordType>;
  100. }
  101. export declare type ColumnsType<RecordType = DefaultRecordType> = (ColumnGroupType<RecordType> | ColumnType<RecordType>)[];
  102. export interface SelectionItem {
  103. key: string;
  104. text: VueNode;
  105. onSelect?: SelectionItemSelectFn;
  106. }
  107. export declare type SelectionSelectFn<T> = (record: T, selected: boolean, selectedRows: T[], nativeEvent: Event) => void;
  108. export interface TableRowSelection<T = DefaultRecordType> {
  109. /** Keep the selection keys in list even the key not exist in `dataSource` anymore */
  110. preserveSelectedRowKeys?: boolean;
  111. type?: RowSelectionType;
  112. selectedRowKeys?: Key[];
  113. defaultSelectedRowKeys?: Key[];
  114. onChange?: (selectedRowKeys: Key[], selectedRows: T[]) => void;
  115. getCheckboxProps?: (record: T) => Partial<Omit<CheckboxProps, 'checked' | 'defaultChecked'>>;
  116. onSelect?: SelectionSelectFn<T>;
  117. onSelectMultiple?: (selected: boolean, selectedRows: T[], changeRows: T[]) => void;
  118. /** @deprecated This function is meaningless and should use `onChange` instead */
  119. onSelectAll?: (selected: boolean, selectedRows: T[], changeRows: T[]) => void;
  120. /** @deprecated This function is meaningless and should use `onChange` instead */
  121. onSelectInvert?: (selectedRowKeys: Key[]) => void;
  122. onSelectNone?: () => void;
  123. selections?: INTERNAL_SELECTION_ITEM[] | boolean;
  124. hideSelectAll?: boolean;
  125. fixed?: FixedType;
  126. columnWidth?: string | number;
  127. columnTitle?: string | VueNode;
  128. checkStrictly?: boolean;
  129. renderCell?: (value: boolean, record: T, index: number, originNode: VueNode) => VueNode | RcRenderedCell<T>;
  130. }
  131. export declare type TransformColumns<RecordType> = (columns: ColumnsType<RecordType>) => ColumnsType<RecordType>;
  132. export interface TableCurrentDataSource<RecordType = DefaultRecordType> {
  133. currentDataSource: RecordType[];
  134. action: TableAction;
  135. }
  136. export interface SorterResult<RecordType = DefaultRecordType> {
  137. column?: ColumnType<RecordType>;
  138. order?: SortOrder;
  139. field?: Key | readonly Key[];
  140. columnKey?: Key;
  141. }
  142. export declare type GetPopupContainer = (triggerNode: HTMLElement) => HTMLElement;
  143. declare type TablePaginationPosition = 'topLeft' | 'topCenter' | 'topRight' | 'bottomLeft' | 'bottomCenter' | 'bottomRight';
  144. export interface TablePaginationConfig extends PaginationProps {
  145. position?: TablePaginationPosition[];
  146. class?: string;
  147. style?: CSSProperties;
  148. }
  149. export interface TransformCellTextProps {
  150. text: any;
  151. column: ColumnType;
  152. record: any;
  153. index: number;
  154. }