mirror of https://github.com/ElemeFE/element
Table: Add clear filter
parent
8e09988918
commit
26a8c222b1
|
@ -1,5 +1,6 @@
|
||||||
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() {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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 @@
|
||||||
<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 @@
|
||||||
]">
|
]">
|
||||||
<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 @@
|
||||||
]">
|
]">
|
||||||
<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 @@
|
||||||
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;
|
||||||
|
|
Loading…
Reference in New Issue