Skip to content

Commit 3ad0156

Browse files
committed
filter feature add beforeVisibleChange callback method
1 parent 17af58a commit 3ad0156

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

packages/ve-table/src/header/header-filter-content.jsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ export default {
5959
},
6060
},
6161
render(h) {
62-
const { filterList, isMultiple, maxHeight } = this.column.filter;
62+
const { filterList, isMultiple, maxHeight, beforeVisibleChange } =
63+
this.column.filter;
6364

6465
const compProps = {
6566
props: {
@@ -69,6 +70,7 @@ export default {
6970
showRadio: true, // when single selection
7071
confirmFilterText: t("confirmFilter"),
7172
resetFilterText: t("resetFilter"),
73+
beforeVisibleChange: beforeVisibleChange,
7274
},
7375
on: {
7476
[EMIT_EVENTS.HEADER_FILTER_CONFIRM]: this.filterConfirm,

tests/unit/specs/ve-table-header-filter.spec.js

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ describe("veTable header filter", () => {
4343
];
4444

4545
const mockFilterFn = jest.fn();
46+
const mockBeforeVisibleChangeFn = jest.fn();
4647

4748
// filter single
4849
const TABLE_COLUMNS_FILTER_SINGLE = [
@@ -61,6 +62,9 @@ describe("veTable header filter", () => {
6162
width: "15%",
6263
// filter
6364
filter: {
65+
beforeVisibleChange: ({ nextVisible }) => {
66+
mockBeforeVisibleChangeFn({ nextVisible });
67+
},
6468
filterList: [
6569
{ value: 0, label: "1900-05-20", selected: false },
6670
{ value: 1, label: "1910-06-20", selected: false },
@@ -333,4 +337,47 @@ describe("veTable header filter", () => {
333337
expect(mockFilterFn).toBeCalled();
334338
expect(mockFilterFn).toHaveBeenCalledWith(callBackResetData);
335339
});
340+
341+
it("beforeVisibleChange callback method", async () => {
342+
const wrapper = mount({
343+
render() {
344+
return (
345+
<ve-table
346+
columns={this.columns}
347+
tableData={this.tableData}
348+
/>
349+
);
350+
},
351+
data() {
352+
return {
353+
columns: TABLE_COLUMNS_FILTER_SINGLE,
354+
tableData: TABLE_DATA,
355+
};
356+
},
357+
});
358+
359+
// icon-vet-filter
360+
wrapper.find(".icon-vet-filter").trigger("click");
361+
await later();
362+
363+
expect(mockBeforeVisibleChangeFn).toBeCalled();
364+
expect(mockBeforeVisibleChangeFn).toHaveBeenCalledWith({
365+
nextVisible: true,
366+
});
367+
368+
// 改变选项
369+
wrapper.findAll(".ve-dropdown-items-li").at(0).trigger("click");
370+
371+
await later();
372+
373+
// confirm btn click
374+
wrapper.findAll(".ve-dropdown-operation-item").at(1).trigger("click");
375+
376+
await later();
377+
378+
expect(mockBeforeVisibleChangeFn).toBeCalled();
379+
expect(mockBeforeVisibleChangeFn).toHaveBeenCalledWith({
380+
nextVisible: false,
381+
});
382+
});
336383
});

0 commit comments

Comments
 (0)