Browse Source

Feature/sort reset (#5156)

* Added sortReset option

* Update changelog
文翼 5 years ago
parent
commit
caf0440c72
4 changed files with 30 additions and 5 deletions
  1. 2 0
      CHANGELOG.md
  2. 16 2
      site/docs/api/table-options.md
  3. 10 2
      src/bootstrap-table.js
  4. 2 1
      src/constants/index.js

+ 2 - 0
CHANGELOG.md

@@ -19,6 +19,7 @@ ChangeLog
 - **New:** Added tr `class` support for `thead`.
 - **New:** Added `formatted` parameter for `getData` method to get formatted data.
 - **New:** Added `paginationParts` option instead of `onlyInfoPagination`.
+- **New:** Added `sortReset` option to reset sort on third click.
 - **Update:** Fixed `updateByUniqueId` method cannot update multiple rows bug.
 - **Update:** Fixed `insertRow` not write to source data array bug.
 - **Update:** Fixed events bug with `detailViewIcon` option.
@@ -39,6 +40,7 @@ ChangeLog
 - **New(export):** Added `forceHide` column option.
 - **New(filter-control):** Added `filterOrderBy` column option support order by `server`.
 - **New(filter-control):** Added radio support for `filterControlContainer`.
+- **New(filter-control):** Added support for array filter.
 - **New(filter-control):** Added `filterControlVisible` option and `toggleFilterControl` method.
 - **New(filter-control):** Added `showFilterControlSwitch` option.
 - **New(fixed-columns):** Added support for sticky-header.

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

@@ -1419,12 +1419,26 @@ The table options are defined in `jQuery.fn.bootstrapTable.defaults`.
 
 - **Detail:**
 
-  Defines the column sort order, can only be `'none'`, `'asc'` or `'desc'`.
+  Defines the column sort order, can only be `undefined`, `'asc'` or `'desc'`.
 
-- **Default:** `'none'`
+- **Default:** `undefined`
 
 - **Example:** [Sort Name Order](https://examples.bootstrap-table.com/#options/sort-name-order.html)
 
+## sortReset
+
+- **Attribute:** `data-sort-reset`
+
+- **Type:** `Boolean`
+
+- **Detail:**
+
+  Set `true` to reset the sort on third click.
+
+- **Default:** `false`
+
+- **Example:** [Sort Reset](https://examples.bootstrap-table.com/#options/sort-reset.html)
+
 ## sortStable
 
 - **Attribute:** `data-sort-stable`

+ 10 - 2
src/bootstrap-table.js

@@ -477,8 +477,16 @@ class BootstrapTable {
 
     if (this.options.sortName === $this.data('field')) {
       const currentSortOrder = this.options.sortOrder
-      this.options.sortOrder = currentSortOrder === 'none' ? 'asc' : currentSortOrder === 'asc' ? 'desc' : 'none'
-      if (this.options.sortOrder === 'none') {
+
+      if (currentSortOrder === undefined) {
+        this.options.sortOrder = 'asc'
+      } else if (currentSortOrder === 'asc') {
+        this.options.sortOrder = 'desc'
+      } else if (this.options.sortOrder === 'desc') {
+        this.options.sortOrder = this.options.sortReset ? undefined : 'asc'
+      }
+
+      if (this.options.sortOrder === undefined) {
         this.options.sortName = undefined
       }
     } else {

+ 2 - 1
src/constants/index.js

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