From 1dc6faf3e638d1fd61097c5b7df9e2006a60faa2 Mon Sep 17 00:00:00 2001 From: George Tan <406132614@qq.com> Date: Tue, 28 Dec 2021 18:45:14 +0800 Subject: [PATCH] feat(table component): add 'expandRows' table action (#1537) * fix(table component): add 'expandRows' * feat(table component): add 'expandRows' table action --- src/components/Table/src/BasicTable.vue | 7 ++++++- src/components/Table/src/hooks/useTable.ts | 3 +++ src/components/Table/src/hooks/useTableExpand.ts | 9 ++++++++- src/components/Table/src/types/table.ts | 1 + 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/components/Table/src/BasicTable.vue b/src/components/Table/src/BasicTable.vue index 45111e46..f076a408 100644 --- a/src/components/Table/src/BasicTable.vue +++ b/src/components/Table/src/BasicTable.vue @@ -199,7 +199,11 @@ const { getRowClassName } = useTableStyle(getProps, prefixCls); - const { getExpandOption, expandAll, collapseAll } = useTableExpand(getProps, tableData, emit); + const { getExpandOption, expandAll, expandRows, collapseAll } = useTableExpand( + getProps, + tableData, + emit, + ); const handlers: InnerHandlers = { onColumnsChange: (data: ColumnChangeParam[]) => { @@ -300,6 +304,7 @@ getShowPagination, setCacheColumnsByField, expandAll, + expandRows, collapseAll, scrollTo, getSize: () => { diff --git a/src/components/Table/src/hooks/useTable.ts b/src/components/Table/src/hooks/useTable.ts index 7165c26e..824249e0 100644 --- a/src/components/Table/src/hooks/useTable.ts +++ b/src/components/Table/src/hooks/useTable.ts @@ -152,6 +152,9 @@ export function useTable(tableProps?: Props): [ expandAll: () => { getTableInstance().expandAll(); }, + expandRows: (keys: string[]) => { + getTableInstance().expandRows(keys); + }, collapseAll: () => { getTableInstance().collapseAll(); }, diff --git a/src/components/Table/src/hooks/useTableExpand.ts b/src/components/Table/src/hooks/useTableExpand.ts index c9f0eb1d..26283659 100644 --- a/src/components/Table/src/hooks/useTableExpand.ts +++ b/src/components/Table/src/hooks/useTableExpand.ts @@ -37,6 +37,13 @@ export function useTableExpand( expandedRowKeys.value = keys; } + function expandRows(keys: string[]) { + // use row ID expands the specified table row + const { isTreeTable } = unref(propsRef); + if (!isTreeTable) return; + expandedRowKeys.value = [...expandedRowKeys.value, ...keys]; + } + function getAllKeys(data?: Recordable[]) { const keys: string[] = []; const { childrenColumnName } = unref(propsRef); @@ -54,5 +61,5 @@ export function useTableExpand( expandedRowKeys.value = []; } - return { getExpandOption, expandAll, collapseAll }; + return { getExpandOption, expandAll, expandRows, collapseAll }; } diff --git a/src/components/Table/src/types/table.ts b/src/components/Table/src/types/table.ts index 3328881e..d7a761c3 100644 --- a/src/components/Table/src/types/table.ts +++ b/src/components/Table/src/types/table.ts @@ -87,6 +87,7 @@ export interface TableActionType { getSelectRows: () => T[]; clearSelectedRowKeys: () => void; expandAll: () => void; + expandRows: (keys: string[]) => void; collapseAll: () => void; scrollTo: (pos: string) => void; // pos: id | "top" | "bottom" getSelectRowKeys: () => string[];