Commit 26a8c222 authored by lirilsu's avatar lirilsu Committed by 杨奕

Table: Add clear filter

parent 8e099889
import Vue from 'vue'; import Vue from 'vue';
import debounce from 'throttle-debounce/debounce'; import debounce from 'throttle-debounce/debounce';
import merge from 'element-ui/src/utils/merge';
import { orderBy, getColumnById, getRowIdentity } from './util'; import { orderBy, getColumnById, getRowIdentity } from './util';
const sortData = (data, states) => { const sortData = (data, states) => {
...@@ -407,6 +408,33 @@ TableStore.prototype.cleanSelection = function() { ...@@ -407,6 +408,33 @@ TableStore.prototype.cleanSelection = function() {
} }
}; };
TableStore.prototype.clearFilter = function() {
const states = this.states;
const { tableHeader, fixedTableHeader, rightFixedTableHeader } = this.table.$refs;
let panels = {};
if (tableHeader) panels = merge(panels, tableHeader.filterPanels);
if (fixedTableHeader) panels = merge(panels, fixedTableHeader.filterPanels);
if (rightFixedTableHeader) panels = merge(panels, rightFixedTableHeader.filterPanels);
const keys = Object.keys(panels);
if (!keys.length) return;
keys.forEach(key => {
panels[key].filteredValue = [];
});
states.filters = {};
this.commit('filterChange', {
column: {},
values: [],
silent: true
});
this.table.$emit('filter-clear');
};
TableStore.prototype.updateAllSelected = function() { TableStore.prototype.updateAllSelected = function() {
const states = this.states; const states = this.states;
const { selection, rowKey, selectable, data } = states; const { selection, rowKey, selectable, data } = states;
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
<div class="hidden-columns" ref="hiddenColumns"><slot></slot></div> <div class="hidden-columns" ref="hiddenColumns"><slot></slot></div>
<div class="el-table__header-wrapper" ref="headerWrapper" v-if="showHeader"> <div class="el-table__header-wrapper" ref="headerWrapper" v-if="showHeader">
<table-header <table-header
ref="tableHeader"
:store="store" :store="store"
:layout="layout" :layout="layout"
:border="border" :border="border"
...@@ -59,6 +60,7 @@ ...@@ -59,6 +60,7 @@
]"> ]">
<div class="el-table__fixed-header-wrapper" ref="fixedHeaderWrapper" v-if="showHeader"> <div class="el-table__fixed-header-wrapper" ref="fixedHeaderWrapper" v-if="showHeader">
<table-header <table-header
ref="fixedTableHeader"
fixed="left" fixed="left"
:border="border" :border="border"
:store="store" :store="store"
...@@ -103,6 +105,7 @@ ...@@ -103,6 +105,7 @@
]"> ]">
<div class="el-table__fixed-header-wrapper" ref="rightFixedHeaderWrapper" v-if="showHeader"> <div class="el-table__fixed-header-wrapper" ref="rightFixedHeaderWrapper" v-if="showHeader">
<table-header <table-header
ref="rightFixedTableHeader"
fixed="right" fixed="right"
:border="border" :border="border"
:store="store" :store="store"
...@@ -243,6 +246,10 @@ ...@@ -243,6 +246,10 @@
this.store.clearSelection(); this.store.clearSelection();
}, },
clearFilter() {
this.store.clearFilter();
},
handleMouseLeave() { handleMouseLeave() {
this.store.commit('setHoverRow', null); this.store.commit('setHoverRow', null);
if (this.hoverState) this.hoverState = null; if (this.hoverState) this.hoverState = null;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment