Commit 9ef1faae authored by njleonzhang's avatar njleonzhang

toggle sortable

parent f1881ef4
...@@ -112,9 +112,9 @@ export default { ...@@ -112,9 +112,9 @@ export default {
} }
{ {
column.sortable column.sortable
? <span class="caret-wrapper"> ? <span class="caret-wrapper" on-click={ ($event) => this.handleHeaderClick($event, column) }>
<i class="sort-caret ascending" on-click={ ($event) => this.handleHeaderClick($event, column, 'ascending')}></i> <i class="sort-caret ascending"></i>
<i class="sort-caret descending" on-click={ ($event) => this.handleHeaderClick($event, column, 'descending')}></i> <i class="sort-caret descending"></i>
</span> </span>
: '' : ''
} }
...@@ -148,7 +148,9 @@ export default { ...@@ -148,7 +148,9 @@ export default {
layout: { layout: {
required: true required: true
}, },
border: Boolean border: Boolean,
defaultSortProp: String,
defaultSortOrder: String
}, },
components: { components: {
...@@ -182,6 +184,23 @@ export default { ...@@ -182,6 +184,23 @@ export default {
this.filterPanels = {}; this.filterPanels = {};
}, },
mounted() {
const states = this.store.states;
states.sortProp = this.defaultSortProp;
states.sortOrder = this.defaultSortOrder;
this.$nextTick(_ => {
for (let i = 0, length = this.columns.length; i < length; i++) {
if (this.columns[i].property === this.defaultSortProp) {
this.columns[i].order = this.defaultSortOrder;
break;
}
}
this.store.commit('changeSortCondition');
});
},
beforeDestroy() { beforeDestroy() {
const panels = this.filterPanels; const panels = this.filterPanels;
for (let prop in panels) { for (let prop in panels) {
...@@ -334,7 +353,16 @@ export default { ...@@ -334,7 +353,16 @@ export default {
document.body.style.cursor = ''; document.body.style.cursor = '';
}, },
handleHeaderClick(event, column, order) { toggleOrder(column) {
if (column.order === 'ascending') {
return 'descending';
}
return 'ascending';
},
handleHeaderClick(event, column) {
let order = this.toggleOrder(column);
let target = event.target; let target = event.target;
while (target && target.tagName !== 'TH') { while (target && target.tagName !== 'TH') {
target = target.parentNode; target = target.parentNode;
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
:store="store" :store="store"
:layout="layout" :layout="layout"
:border="border" :border="border"
:default-sort-prop="defaultSortProp"
:default-sort-order="defaultSortOrder"
:style="{ width: layout.bodyWidth ? layout.bodyWidth + 'px' : '' }"> :style="{ width: layout.bodyWidth ? layout.bodyWidth + 'px' : '' }">
</table-header> </table-header>
</div> </div>
...@@ -166,7 +168,11 @@ ...@@ -166,7 +168,11 @@
expandRowKeys: Array, expandRowKeys: Array,
defaultExpandAll: Boolean defaultExpandAll: Boolean,
defaultSortProp: String,
defaultSortOrder: String
}, },
components: { components: {
......
...@@ -1105,9 +1105,9 @@ describe('Table', () => { ...@@ -1105,9 +1105,9 @@ describe('Table', () => {
}); });
setTimeout(_ => { setTimeout(_ => {
const elm = vm.$el.querySelector('.caret-wrapper > .ascending'); const elm = vm.$el.querySelector('.caret-wrapper');
elm.click(); elm.click();
setTimeout(_ => { setTimeout(_ => {
const lastCells = vm.$el.querySelectorAll('.el-table__body-wrapper tbody tr td:last-child'); const lastCells = vm.$el.querySelectorAll('.el-table__body-wrapper tbody tr td:last-child');
expect(toArray(lastCells).map(node => node.textContent)).to.eql(['100', '95', '92', '92', '80']); expect(toArray(lastCells).map(node => node.textContent)).to.eql(['100', '95', '92', '92', '80']);
...@@ -1143,7 +1143,7 @@ describe('Table', () => { ...@@ -1143,7 +1143,7 @@ describe('Table', () => {
const vm = createTable('', '', '', 'sortable'); const vm = createTable('', '', '', 'sortable');
it('ascending', done => { it('ascending', done => {
const elm = vm.$el.querySelector('.caret-wrapper > .ascending'); const elm = vm.$el.querySelector('.caret-wrapper');
elm.click(); elm.click();
setTimeout(_ => { setTimeout(_ => {
...@@ -1155,7 +1155,7 @@ describe('Table', () => { ...@@ -1155,7 +1155,7 @@ describe('Table', () => {
}); });
it('descending', done => { it('descending', done => {
const elm = vm.$el.querySelector('.caret-wrapper > .descending'); const elm = vm.$el.querySelector('.caret-wrapper');
elm.click(); elm.click();
setTimeout(_ => { setTimeout(_ => {
......
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