浏览代码

Sort reset on third click (#5152)

* changed sorting asc, desc, rest

* Fixed sort reset for extensions

* added documentation

Co-authored-by: Dennis Hernández <dennishernandezvargas@gmail.com>
Dustin Utecht 5 年之前
父节点
当前提交
a530e8d460

+ 2 - 2
site/docs/api/table-options.md

@@ -1419,9 +1419,9 @@ The table options are defined in `jQuery.fn.bootstrapTable.defaults`.
 
 - **Detail:**
 
-  Defines the column sort order, can only be `'asc'` or `'desc'`.
+  Defines the column sort order, can only be `'none'`, `'asc'` or `'desc'`.
 
-- **Default:** `'asc'`
+- **Default:** `'none'`
 
 - **Example:** [Sort Name Order](https://examples.bootstrap-table.com/#options/sort-name-order.html)
 

+ 9 - 2
src/bootstrap-table.js

@@ -406,6 +406,7 @@ class BootstrapTable {
     }
 
     this.data = this.options.data
+    this.unsortedData = [...this.data]
 
     if (this.options.sidePagination === 'server') {
       return
@@ -463,6 +464,8 @@ class BootstrapTable {
           this.$el.find(`tr td:nth-child(${index + 1})`).addClass(this.options.sortClass)
         }, 250)
       }
+    } else {
+      this.data = this.unsortedData
     }
   }
 
@@ -473,7 +476,11 @@ class BootstrapTable {
     this.$header.add(this.$header_).find('span.order').remove()
 
     if (this.options.sortName === $this.data('field')) {
-      this.options.sortOrder = this.options.sortOrder === 'asc' ? 'desc' : 'asc'
+      const currentSortOrder = this.options.sortOrder
+      this.options.sortOrder = currentSortOrder === 'none' ? 'asc' : currentSortOrder === 'asc' ? 'desc' : 'none'
+      if (this.options.sortOrder === 'none') {
+        this.options.sortName = undefined
+      }
     } else {
       this.options.sortName = $this.data('field')
       if (this.options.rememberOrder) {
@@ -939,7 +946,7 @@ class BootstrapTable {
         }
         return false
       }) : this.data
-
+      this.unsortedData = [...this.data]
       this.initSort()
     }
   }

+ 1 - 1
src/constants/index.js

@@ -185,7 +185,7 @@ const DEFAULTS = {
   sortClass: undefined,
   silentSort: true,
   sortName: undefined,
-  sortOrder: 'asc',
+  sortOrder: 'none',
   sortStable: false,
   rememberOrder: false,
   serverSort: true,

+ 1 - 0
src/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js

@@ -168,6 +168,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
         }
         return false
       }) : this.data
+      this.unsortedData = [...this.data]
     }
   }
 }

+ 2 - 0
src/extensions/filter-control/bootstrap-table-filter-control.js

@@ -225,6 +225,8 @@ $.BootstrapTable = class extends $.BootstrapTable {
         return !itemIsExpected.includes(false)
       })
       : that.data
+
+    that.unsortedData = [...that.data]
   }
 
   isValueExpected (searchValue, value, column, key) {

+ 1 - 0
src/extensions/toolbar/bootstrap-table-toolbar.js

@@ -372,6 +372,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
       }
       return true
     }) : this.data
+    this.unsortedData = [...this.data]
   }
 
   onColumnAdvancedSearch (e) {