fix: 配置表格行操作省略

This commit is contained in:
sunlei 2026-06-02 10:04:55 +08:00
parent 7638250c70
commit 6221487991
4 changed files with 27 additions and 6 deletions

View File

@ -33,7 +33,6 @@ import { renderKtTableSummary } from './components/KtTableSummary';
import {
KT_TABLE_ACTION_COLUMN_KEY,
KT_TABLE_INDEX_COLUMN_KEY,
KT_TABLE_ROW_ACTION_OVERFLOW_LIMIT,
KT_TABLE_ROW_ACTION_VISIBLE_COUNT,
} from './config/constants';
import { DEFAULT_TABLE_SETTING, ktTableProps } from './config/ktTableProps';
@ -729,7 +728,9 @@ export default defineComponent({
* @param actions
*/
function splitRowActions(actions: KtTableRowAction[]) {
if (actions.length <= KT_TABLE_ROW_ACTION_OVERFLOW_LIMIT) {
const visibleCount = resolveRowActionVisibleCount();
if (actions.length <= visibleCount) {
return {
inlineActions: actions,
overflowActions: [],
@ -737,11 +738,24 @@ export default defineComponent({
}
return {
inlineActions: actions.slice(0, KT_TABLE_ROW_ACTION_VISIBLE_COUNT),
overflowActions: actions.slice(KT_TABLE_ROW_ACTION_VISIBLE_COUNT),
inlineActions: actions.slice(0, visibleCount),
overflowActions: actions.slice(visibleCount),
};
}
/**
* 退
*/
function resolveRowActionVisibleCount() {
const visibleCount = Number(props.rowActionVisibleCount);
if (!Number.isFinite(visibleCount)) {
return KT_TABLE_ROW_ACTION_VISIBLE_COUNT;
}
return Math.max(0, Math.floor(visibleCount));
}
/**
* toolbar
*/

View File

@ -12,8 +12,6 @@ export const KT_TABLE_DEFAULT_ROW_RESIZE_MAX_HEIGHT = 140;
export const KT_TABLE_DEFAULT_ROW_RESIZE_MIN_HEIGHT = 40;
export const KT_TABLE_ROW_ACTION_OVERFLOW_LIMIT = 3;
export const KT_TABLE_ROW_ACTION_VISIBLE_COUNT = 2;
export const KT_TABLE_DEFAULT_PAGE_SIZE = 10;

View File

@ -21,6 +21,7 @@ import {
KT_TABLE_DEFAULT_PAGE_SIZE_OPTIONS,
KT_TABLE_DEFAULT_ROW_RESIZE_MAX_HEIGHT,
KT_TABLE_DEFAULT_ROW_RESIZE_MIN_HEIGHT,
KT_TABLE_ROW_ACTION_VISIBLE_COUNT,
} from './constants';
export const DEFAULT_TABLE_SETTING: Required<KtTableSetting> = {
@ -45,6 +46,7 @@ export const KT_TABLE_PROP_KEYS = [
'pageSize',
'pageSizeOptions',
'rowActions',
'rowActionVisibleCount',
'rowResizeMaxHeight',
'rowResizeMinHeight',
'rowResizable',
@ -83,6 +85,7 @@ export function createDefaultTableProps(): KtTableResolvedProps<
pageSize: KT_TABLE_DEFAULT_PAGE_SIZE,
pageSizeOptions: KT_TABLE_DEFAULT_PAGE_SIZE_OPTIONS,
rowActions: [],
rowActionVisibleCount: KT_TABLE_ROW_ACTION_VISIBLE_COUNT,
rowResizeMaxHeight: KT_TABLE_DEFAULT_ROW_RESIZE_MAX_HEIGHT,
rowResizeMinHeight: KT_TABLE_DEFAULT_ROW_RESIZE_MIN_HEIGHT,
rowResizable: false,
@ -154,6 +157,10 @@ export const ktTableProps = {
default: () => [],
type: Array as PropType<KtTableRowAction[]>,
},
rowActionVisibleCount: {
default: KT_TABLE_ROW_ACTION_VISIBLE_COUNT,
type: Number,
},
rowResizeMaxHeight: {
default: KT_TABLE_DEFAULT_ROW_RESIZE_MAX_HEIGHT,
type: Number,

View File

@ -234,6 +234,7 @@ export interface KtTableProps<
pageSize?: number;
pageSizeOptions?: string[];
rowActions?: Array<KtTableRowAction<Row, SearchValues>>;
rowActionVisibleCount?: number;
rowResizeMaxHeight?: number;
rowResizeMinHeight?: number;
rowResizable?: boolean;
@ -263,6 +264,7 @@ export type KtTableResolvedProps<
pageSize: number;
pageSizeOptions: string[];
rowActions: Array<KtTableRowAction<Row, SearchValues>>;
rowActionVisibleCount: number;
rowKey: ((row: Row) => string) | keyof Row | string;
rowResizable: boolean;
rowResizeMaxHeight: number;