Skip to content

Commit 426be49

Browse files
committed
feat(table): add expandAllRows method
1 parent 74114d4 commit 426be49

File tree

4 files changed

+28
-5
lines changed

4 files changed

+28
-5
lines changed

packages/devui-vue/devui/table/src/store/index.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,12 +175,18 @@ const createExpandRow = <T>(dataSource: Ref<T[]>, trackBy: (item: T) => string)
175175
return dataSource.value.filter((item) => isRowExpanded(item));
176176
};
177177

178+
const expandAllRows = (): void => {
179+
dataSource.value.forEach(item => {
180+
_expandedRows.value.add(trackBy(item));
181+
});
182+
};
178183

179184
return {
180185
_expandedRows,
181186
toggleRow,
182187
isRowExpanded,
183188
getExpandedRows,
189+
expandAllRows,
184190
};
185191
};
186192

@@ -215,7 +221,13 @@ export function createStore<T>(dataSource: Ref<T[]>, table: Table<DefaultRow>):
215221
const { sortData, thList } = createSorter(dataSource, _data);
216222

217223
const { isFixedLeft } = createFixedLogic(_columns);
218-
const { _expandedRows, toggleRow, isRowExpanded, getExpandedRows } = createExpandRow(dataSource, table.props.trackBy as (v: T) => string);
224+
const {
225+
_expandedRows,
226+
toggleRow,
227+
isRowExpanded,
228+
getExpandedRows,
229+
expandAllRows
230+
} = createExpandRow(dataSource, table.props.trackBy as (v: T) => string);
219231

220232
return {
221233
_table: table,
@@ -238,6 +250,7 @@ export function createStore<T>(dataSource: Ref<T[]>, table: Table<DefaultRow>):
238250
toggleRow,
239251
isRowExpanded,
240252
getExpandedRows,
253+
expandAllRows,
241254
sortData,
242255
isRowChecked,
243256
checkRow,

packages/devui-vue/devui/table/src/store/store-types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,6 @@ export interface TableStore<T = Record<string, any>> {
2525
checkRow(toggle: boolean, row: T): void;
2626
toggleRow(row: T): void;
2727
isRowExpanded(row: T): boolean;
28-
getExpandedRows(): T;
28+
getExpandedRows(): T[];
29+
expandAllRows(): void;
2930
}

packages/devui-vue/devui/table/src/table.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ export default defineComponent({
3838
getCheckedRows() {
3939
return store.getCheckedRows();
4040
},
41+
expandAllRows() {
42+
store.expandAllRows();
43+
},
4144
});
4245

4346
onMounted(async () => {

packages/devui-vue/docs/components/table/index.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1051,7 +1051,7 @@ export default defineComponent({
10511051

10521052
```vue
10531053
<template>
1054-
<d-table :data="dataSource" :trackBy="(item) => item?.firstName" @expand-change="expandChange">
1054+
<d-table ref="tableRef" :data="dataSource" :trackBy="(item) => item?.firstName" @expand-change="expandChange">
10551055
<d-column type="expand">
10561056
<template #default="rowData">
10571057
<div>First Name: {{rowData.row.firstName}}</div>
@@ -1068,10 +1068,12 @@ export default defineComponent({
10681068
</template>
10691069
10701070
<script>
1071-
import { defineComponent, ref } from 'vue';
1071+
import { defineComponent, ref, onMounted } from 'vue';
10721072
10731073
export default defineComponent({
10741074
setup() {
1075+
const tableRef = ref();
1076+
10751077
const dataSource = ref([
10761078
{
10771079
firstName: 'Jacob',
@@ -1099,11 +1101,15 @@ export default defineComponent({
10991101
},
11001102
]);
11011103
1104+
onMounted(() => {
1105+
tableRef.value.expandAllRows();
1106+
});
1107+
11021108
const expandChange = (currentRow, expandedRows) => {
11031109
console.log('currentRow, expandedRows', currentRow, expandedRows);
11041110
}
11051111
1106-
return { dataSource, expandChange };
1112+
return { dataSource, expandChange, tableRef };
11071113
},
11081114
});
11091115
</script>

0 commit comments

Comments
 (0)