浏览代码

Rewrote all extensions to ES6.

zhixin 6 年之前
父节点
当前提交
b313e17ca3

+ 5 - 9
src/bootstrap-table.js

@@ -38,7 +38,7 @@ class BootstrapTable {
     const o = this.options
     this.constants = Constants.CONSTANTS
 
-    const buttonsPrefix = o.buttonsPrefix ? o.buttonsPrefix + '-' : ''
+    const buttonsPrefix = o.buttonsPrefix ? `${o.buttonsPrefix}-` : ''
     this.constants.buttonsClass = [
       o.buttonsPrefix,
       buttonsPrefix + o.buttonsClass,
@@ -728,9 +728,7 @@ class BootstrapTable {
 
       // Check filter
       if (typeof this.filterOptions.filterAlgorithm === 'function') {
-        this.data = this.options.data.filter((item, i) => {
-          return this.filterOptions.filterAlgorithm.apply(null, [item, f])
-        })
+        this.data = this.options.data.filter((item, i) => this.filterOptions.filterAlgorithm.apply(null, [item, f]))
       } else if (typeof this.filterOptions.filterAlgorithm === 'string') {
         this.data = f ? this.options.data.filter((item, i) => {
           const filterAlgorithm = this.filterOptions.filterAlgorithm
@@ -804,7 +802,7 @@ class BootstrapTable {
               let comparisonCheck = false
 
               if (matches) {
-                const operator = matches[1] || matches[5] + 'l'
+                const operator = matches[1] || `${matches[5]}l`
                 const comparisonValue = matches[2] || matches[3]
                 const int = parseInt(value, 10)
                 const comparisonInt = parseInt(comparisonValue, 10)
@@ -988,10 +986,8 @@ class BootstrapTable {
       }
 
       const middleSize = Math.round(o.paginationPagesBySide / 2)
-      const pageItem = (i, classes = '') => {
-        return Utils.sprintf(this.constants.html.paginationItem,
-          classes + (i === o.pageNumber ? ` ${this.constants.classes.paginationActive}` : ''), i)
-      }
+      const pageItem = (i, classes = '') => Utils.sprintf(this.constants.html.paginationItem,
+        classes + (i === o.pageNumber ? ` ${this.constants.classes.paginationActive}` : ''), i)
 
       if (from > 1) {
         let max = o.paginationPagesBySide

+ 67 - 69
src/extensions/cell-input/bootstrap-table-cell-input.js

@@ -11,22 +11,22 @@ $.extend($.fn.bootstrapTable.defaults, {
   cellInputUniqueId: '',
   cellInputSelectOptinons: [], // [{ text: '', value: '', disabled: false, default: true },{}]
   cellInputIsDeciaml: false,
-  onCellInputInit: function () {
+  onCellInputInit () {
     return false
   },
-  onCellInputBlur: function (field, row, oldValue, $el) {
+  onCellInputBlur (field, row, oldValue, $el) {
     return false
   },
-  onCellInputFocus: function (field, row, oldValue, $el) {
+  onCellInputFocus (field, row, oldValue, $el) {
     return false
   },
-  onCellInputKeyup: function (field, row, oldValue, $el) {
+  onCellInputKeyup (field, row, oldValue, $el) {
     return false
   },
-  onCellInputKeydown: function (field, row, oldValue, $el) {
+  onCellInputKeydown (field, row, oldValue, $el) {
     return false
   },
-  onCellInputSelectChange: function (field, row, oldValue, $el) {
+  onCellInputSelectChange (field, row, oldValue, $el) {
     return false
   }
 })
@@ -40,76 +40,74 @@ $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
   'cellinput-selectchange.bs.table': 'onCellInputSelectChange'
 })
 
-var BootstrapTable = $.fn.bootstrapTable.Constructor
-var _initTable = BootstrapTable.prototype.initTable
-var _initBody = BootstrapTable.prototype.initBody
+const BootstrapTable = $.fn.bootstrapTable.Constructor
+const _initTable = BootstrapTable.prototype.initTable
+const _initBody = BootstrapTable.prototype.initBody
 
-BootstrapTable.prototype.initTable = function () {
-  _initTable.apply(this, Array.prototype.slice.apply(arguments))
+BootstrapTable.prototype.initTable = function (...args) {
+  _initTable.apply(this, Array.prototype.slice.apply(args))
 
   // exit if table.options.cellInputEnabled = false
   if (!this.options.cellInputEnabled) {
     return
   }
 
-  $.each(this.columns, function (i, column) {
+  $.each(this.columns, (i, column) => {
 
     // exit if column.cellInputEnabled = false
     if (!column.cellInputEnabled) {
       return
     }
-    var _formatter = column.formatter
+    const _formatter = column.formatter
     if (column.cellInputType === 'text') {
-      column.formatter = function (value, row, index) {
-        var result = _formatter ? _formatter(value, row, index) : value
+      column.formatter = (value, row, index) => {
+        let result = _formatter ? _formatter(value, row, index) : value
 
         // Решает проблему невозможности ввода кавычек "
         result = typeof result === 'string' ? result.replace(/"/g, '"') : result
 
-        var isSetDataUniqueIdAttr = column.cellInputUniqueId && column.cellInputUniqueId.length > 0
-        var disableCallbackFunc = column.cellInputDisableCallbackFunc
+        const isSetDataUniqueIdAttr = column.cellInputUniqueId && column.cellInputUniqueId.length > 0
+        const disableCallbackFunc = column.cellInputDisableCallbackFunc
         return ['<input type="text" class="table-td-textbox form-control"',
           // ' id="' + column.field + '"',
-          isSetDataUniqueIdAttr ? ' data-uniqueid="' + row[column.cellInputUniqueId] + '"' : '',
-          ' data-name="' + column.field + '"',
-          ' data-value="' + result + '"',
-          ' value="' + result + '"',
+          isSetDataUniqueIdAttr ? ` data-uniqueid="${row[column.cellInputUniqueId]}"` : '',
+          ` data-name="${column.field}"`,
+          ` data-value="${result}"`,
+          ` value="${result}"`,
           ' autofocus="autofocus"',
           typeof disableCallbackFunc !== 'undefined' && disableCallbackFunc(row) ? ' disabled="disabled"' : '',
           '>'
         ].join('')
       }
     } else if (column.cellInputType === 'select') {
-      column.formatter = function (value, row, index) {
+      column.formatter = (value, row, index) => {
+        let result = _formatter ? _formatter(value, row, index) : value
+        const optionDatas = column.cellInputSelectOptinons !== null ? column.cellInputSelectOptinons : []
+        const selectoptions = []
 
-        var result = _formatter ? _formatter(value, row, index) : value
-        var optionDatas = column.cellInputSelectOptinons !== null ? column.cellInputSelectOptinons : []
-        var selectoptions = []
-
-        var arrAllowedValues = []
-        for (var k = 0; k < optionDatas.length; k++) {
+        const arrAllowedValues = []
+        for (let k = 0; k < optionDatas.length; k++) {
           arrAllowedValues.push(optionDatas[k].value)
         }
-        var allowedVal = $.inArray(value, arrAllowedValues) >= 0
+        const allowedVal = $.inArray(value, arrAllowedValues) >= 0
 
-        for (var j = 0; j < optionDatas.length; j++) {
-          var optionData = optionDatas[j]
-          var isSelected = optionData.value === value
+        for (const optionData of optionDatas) {
+          let isSelected = optionData.value === value
           if (!allowedVal && optionData.disabled) {
             isSelected = true
             result = optionData.value
           }
 
-          selectoptions.push('<option value="' + optionData.value + '" ' + (isSelected ? ' selected="selected" ' : '') + (optionData.disabled ? ' disabled' : '') + '>' + optionData.text + '</option>')
+          selectoptions.push(`<option value="${optionData.value}" ${isSelected ? ' selected="selected" ' : ''}${optionData.disabled ? ' disabled' : ''}>${optionData.text}</option>`)
         }
 
-        var isSetDataUniqueIdAttr = column.cellInputUniqueId && column.cellInputUniqueId.length > 0
-        var disableCallbackFunc = column.disableCallbackFunc
+        const isSetDataUniqueIdAttr = column.cellInputUniqueId && column.cellInputUniqueId.length > 0
+        const disableCallbackFunc = column.disableCallbackFunc
         return [
           '<select class="form-control" style="padding: 4px;"',
-          isSetDataUniqueIdAttr ? ' data-uniqueid="' + row[column.cellInputUniqueId] + '"' : '',
-          ' data-name="' + column.field + '"',
-          ' data-value="' + result + '"',
+          isSetDataUniqueIdAttr ? ` data-uniqueid="${row[column.cellInputUniqueId]}"` : '',
+          ` data-name="${column.field}"`,
+          ` data-value="${result}"`,
           typeof disableCallbackFunc !== 'undefined' && disableCallbackFunc(row) ? ' disabled="disabled"' : '',
           '>',
           selectoptions.join(''),
@@ -121,45 +119,45 @@ BootstrapTable.prototype.initTable = function () {
 }
 
 BootstrapTable.prototype.initBody = function (fixedScroll) {
-  var that = this
+  const that = this
   _initBody.apply(this, Array.prototype.slice.apply(arguments))
 
   if (!this.options.cellInputEnabled) {
     return
   }
 
-  $.each(this.columns, function (i, column) {
+  $.each(this.columns, (i, column) => {
     if (column.cellInputType === 'text') {
-      that.$body.find('input[data-name="' + column.field + '"]')
+      that.$body.find(`input[data-name="${column.field}"]`)
         .off('blur').on('blur', function (e) {
-          var data = that.getData()
-          var index = $(this).parents('tr[data-index]').data('index')
-          var row = data[index]
-          var newValue = $(this).val()
+          const data = that.getData()
+          const index = $(this).parents('tr[data-index]').data('index')
+          const row = data[index]
+          const newValue = $(this).val()
 
           row[column.field] = newValue
           that.trigger('cellinput-blur', column.field, row, $(this))
         })
 
-      that.$body.find('input[data-name="' + column.field + '"]')
+      that.$body.find(`input[data-name="${column.field}"]`)
         .off('keyup').on('keyup', function (e) {
-          var data = that.getData()
-          var index = $(this).parents('tr[data-index]').data('index')
-          var row = data[index]
-          var oldValue = row[column.field]
-          var newValue = $(this).val()
+          const data = that.getData()
+          const index = $(this).parents('tr[data-index]').data('index')
+          const row = data[index]
+          const oldValue = row[column.field]
+          const newValue = $(this).val()
 
           row[column.field] = newValue
           that.trigger('cellinput-keyup', column.field, row, oldValue, index, $(this))
         })
 
-      that.$body.find('input[data-name="' + column.field + '"]')
+      that.$body.find(`input[data-name="${column.field}"]`)
         .off('keydown').on('keydown', function (e) {
-          var data = that.getData()
-          var index = $(this).parents('tr[data-index]').data('index')
-          var row = data[index]
-          var oldValue = row[column.field]
-          var newValue = $(this).val()
+          const data = that.getData()
+          const index = $(this).parents('tr[data-index]').data('index')
+          const row = data[index]
+          const oldValue = row[column.field]
+          const newValue = $(this).val()
 
           if (!column.tdtexboxIsDeciaml) {
             row[column.field] = newValue
@@ -168,27 +166,27 @@ BootstrapTable.prototype.initBody = function (fixedScroll) {
           that.trigger('cellinput-keydown', column.field, row, oldValue, index, $(this))
         })
 
-      that.$body.find('input[data-name="' + column.field + '"]')
+      that.$body.find(`input[data-name="${column.field}"]`)
         .off('focus').on('focus', function (e) {
-          var data = that.getData()
-          var index = $(this).parents('tr[data-index]').data('index')
-          var row = data[index]
+          const data = that.getData()
+          const index = $(this).parents('tr[data-index]').data('index')
+          const row = data[index]
 
           that.trigger('cellinput-focus', column.field, row, $(this))
         })
     } else if (column.cellInputType === 'select') {
 
-      that.$body.find('select[data-name="' + column.field + '"]')
+      that.$body.find(`select[data-name="${column.field}"]`)
         .off('change').on('change', function (e) {
 
-          var data = that.getData()
-          var index = $(this).parents('tr[data-index]').data('index')
-          var row = data[index]
-          var oldValue = row[column.field]
-          var newValue = $(this).val()
+          const data = that.getData()
+          const index = $(this).parents('tr[data-index]').data('index')
+          const row = data[index]
+          const oldValue = row[column.field]
+          const newValue = $(this).val()
 
-          var isBoolTrue = newValue.toLowerCase() === 'true'
-          var isBoolFalse = newValue.toLowerCase() === 'false'
+          const isBoolTrue = newValue.toLowerCase() === 'true'
+          const isBoolFalse = newValue.toLowerCase() === 'false'
 
           row[column.field] = isBoolTrue ? true : (isBoolFalse) ? false : newValue
           that.trigger('cellinput-selectchange', column.field, row, oldValue, index, $(this))

+ 46 - 52
src/extensions/group-by-v2/bootstrap-table-group-by.js

@@ -3,17 +3,17 @@
  * @version: v1.1.0
  */
 
-var initBodyCaller
-var tableGroups
+let initBodyCaller
+let tableGroups
 
 // it only does '%s', and return '' when arguments are undefined
-var sprintf = function (str) {
-  var args = arguments
-  var flag = true
-  var i = 1
+const sprintf = function (str) {
+  const args = arguments
+  let flag = true
+  let i = 1
 
-  str = str.replace(/%s/g, function () {
-    var arg = args[i++]
+  str = str.replace(/%s/g, () => {
+    const arg = args[i++]
 
     if (typeof arg === 'undefined') {
       flag = false
@@ -24,10 +24,10 @@ var sprintf = function (str) {
   return flag ? str : ''
 }
 
-var groupBy = function (array , f) {
-  var groups = {}
-  array.forEach(function (o) {
-    var group = f(o)
+const groupBy = (array, f) => {
+  const groups = {}
+  array.forEach(o => {
+    const group = f(o)
     groups[group] = groups[group] || []
     groups[group].push(o)
   })
@@ -41,38 +41,34 @@ $.extend($.fn.bootstrapTable.defaults, {
   groupByFormatter: undefined
 })
 
-var BootstrapTable = $.fn.bootstrapTable.Constructor
-var _initSort = BootstrapTable.prototype.initSort
-var _initBody = BootstrapTable.prototype.initBody
-var _updateSelected = BootstrapTable.prototype.updateSelected
+const BootstrapTable = $.fn.bootstrapTable.Constructor
+const _initSort = BootstrapTable.prototype.initSort
+const _initBody = BootstrapTable.prototype.initBody
+const _updateSelected = BootstrapTable.prototype.updateSelected
 
-BootstrapTable.prototype.initSort = function () {
-  _initSort.apply(this, Array.prototype.slice.apply(arguments))
+BootstrapTable.prototype.initSort = function (...args) {
+  _initSort.apply(this, Array.prototype.slice.apply(args))
 
-  var that = this
+  const that = this
   tableGroups = []
 
   if ((this.options.groupBy) && (this.options.groupByField !== '')) {
 
     if ((this.options.sortName !== this.options.groupByField)) {
-      this.data.sort(function (a, b) {
-        return a[that.options.groupByField].localeCompare(b[that.options.groupByField])
-      })
+      this.data.sort((a, b) => a[that.options.groupByField].localeCompare(b[that.options.groupByField]))
     }
 
-    var groups = groupBy(that.data, function (item) {
-      return [item[that.options.groupByField]]
-    })
+    const groups = groupBy(that.data, item => [item[that.options.groupByField]])
 
-    var index = 0
-    $.each(groups, function (key, value) {
+    let index = 0
+    $.each(groups, (key, value) => {
       tableGroups.push({
         id: index,
         name: key,
         data: value
       })
 
-      value.forEach(function (item) {
+      value.forEach(item => {
         if (!item._data) {
           item._data = {}
         }
@@ -85,17 +81,17 @@ BootstrapTable.prototype.initSort = function () {
   }
 }
 
-BootstrapTable.prototype.initBody = function () {
+BootstrapTable.prototype.initBody = function (...args) {
   initBodyCaller = true
 
-  _initBody.apply(this, Array.prototype.slice.apply(arguments))
+  _initBody.apply(this, Array.prototype.slice.apply(args))
 
   if ((this.options.groupBy) && (this.options.groupByField !== '')) {
-    var that = this
-    var checkBox = false
-    var visibleColumns = 0
+    const that = this
+    let checkBox = false
+    let visibleColumns = 0
 
-    this.columns.forEach(function (column) {
+    this.columns.forEach(column => {
       if (column.checkbox) {
         checkBox = true
       } else {
@@ -109,8 +105,8 @@ BootstrapTable.prototype.initBody = function () {
       visibleColumns += 1
     }
 
-    tableGroups.forEach(function (item) {
-      var html = []
+    tableGroups.forEach(item => {
+      const html = []
 
       html.push(sprintf('<tr class="info groupBy expanded" data-group-index="%s">', item.id))
 
@@ -124,7 +120,7 @@ BootstrapTable.prototype.initBody = function () {
           '</td>'
         )
       }
-      var formattedValue = item.name
+      let formattedValue = item.name
       if (typeof(that.options.groupByFormatter) === 'function') {
         formattedValue = that.options.groupByFormatter(item.name, item.id, item.data)
       }
@@ -135,12 +131,12 @@ BootstrapTable.prototype.initBody = function () {
 
       html.push('</tr>')
 
-      that.$body.find('tr[data-parent-index=' + item.id + ']:first').before($(html.join('')))
+      that.$body.find(`tr[data-parent-index=${item.id}]:first`).before($(html.join('')))
     })
 
     this.$selectGroup = []
     this.$body.find('[name="btSelectGroup"]').each(function () {
-      var self = $(this)
+      const self = $(this)
 
       that.$selectGroup.push({
         group: self,
@@ -154,15 +150,15 @@ BootstrapTable.prototype.initBody = function () {
     this.$container.off('click', '.groupBy')
       .on('click', '.groupBy', function () {
         $(this).toggleClass('expanded')
-        that.$body.find('tr[data-parent-index=' + $(this).closest('tr').data('group-index') + ']').toggleClass('hidden')
+        that.$body.find(`tr[data-parent-index=${$(this).closest('tr').data('group-index')}]`).toggleClass('hidden')
       })
 
     this.$container.off('click', '[name="btSelectGroup"]')
       .on('click', '[name="btSelectGroup"]', function (event) {
         event.stopImmediatePropagation()
 
-        var self = $(this)
-        var checked = self.prop('checked')
+        const self = $(this)
+        const checked = self.prop('checked')
         that[checked ? 'checkGroup' : 'uncheckGroup']($(this).closest('tr').data('group-index'))
       })
   }
@@ -171,13 +167,13 @@ BootstrapTable.prototype.initBody = function () {
   this.updateSelected()
 }
 
-BootstrapTable.prototype.updateSelected = function () {
+BootstrapTable.prototype.updateSelected = function (...args) {
   if (!initBodyCaller) {
-    _updateSelected.apply(this, Array.prototype.slice.apply(arguments))
+    _updateSelected.apply(this, Array.prototype.slice.apply(args))
 
     if ((this.options.groupBy) && (this.options.groupByField !== '')) {
-      this.$selectGroup.forEach(function (item) {
-        var checkGroup = item.item.filter(':enabled').length ===
+      this.$selectGroup.forEach(item => {
+        const checkGroup = item.item.filter(':enabled').length ===
                       item.item.filter(':enabled').filter(':checked').length
 
         item.group.prop('checked', checkGroup)
@@ -187,11 +183,9 @@ BootstrapTable.prototype.updateSelected = function () {
 }
 
 BootstrapTable.prototype.getGroupSelections = function (index) {
-  var that = this
+  const that = this
 
-  return $.grep(this.data, function (row) {
-    return (row[that.header.stateField] && (row._data['parent-index'] === index))
-  })
+  return this.data.filter(row => row[that.header.stateField] && (row._data['parent-index'] === index))
 }
 
 BootstrapTable.prototype.checkGroup = function (index) {
@@ -203,8 +197,8 @@ BootstrapTable.prototype.uncheckGroup = function (index) {
 }
 
 BootstrapTable.prototype.checkGroup_ = function (index, checked) {
-  var rows
-  var filter = function () {
+  let rows
+  const filter = function () {
     return ($(this).closest('tr').data('parent-index') === index)
   }
 

+ 43 - 47
src/extensions/group-by/bootstrap-table-group-by.js

@@ -4,16 +4,16 @@
  * @version: v1.1.0
  */
 
-var originalRowAttr
-var dataTTId = 'data-tt-id'
-var dataTTParentId = 'data-tt-parent-id'
-var obj = {}
-var parentId
+let originalRowAttr
+const dataTTId = 'data-tt-id'
+const dataTTParentId = 'data-tt-parent-id'
+const obj = {}
+let parentId
 
-var getParentRowId = function (that, id) {
-  var parentRows = that.$body.find('tr').not('[' + 'data-tt-parent-id]')
+const getParentRowId = (that, id) => {
+  const parentRows = that.$body.find('tr').not('[' + 'data-tt-parent-id]')
 
-  for (var i = 0; i < parentRows.length; i++) {
+  for (let i = 0; i < parentRows.length; i++) {
     if (i === id) {
       return $(parentRows[i]).attr('data-tt-id')
     }
@@ -22,11 +22,11 @@ var getParentRowId = function (that, id) {
   return undefined
 }
 
-var sumData = function (that, data) {
-  var sumRow = {}
-  $.each(data, function (i, row) {
+const sumData = (that, data) => {
+  const sumRow = {}
+  $.each(data, (i, row) => {
     if (!row.IsParent) {
-      for (var prop in row) {
+      for (const prop in row) {
         if (!isNaN(parseFloat(row[prop]))) {
           if (that.columns[that.fieldsColumnsIndex[prop]].groupBySumGroup) {
             if (sumRow[prop] === undefined) {
@@ -41,7 +41,7 @@ var sumData = function (that, data) {
   return sumRow
 }
 
-const rowAttr = function (row, index) {
+const rowAttr = (row, index) => {
   // Call the User Defined Function
   originalRowAttr.apply([row, index])
 
@@ -57,14 +57,14 @@ const rowAttr = function (row, index) {
   return obj
 }
 
-var setObjectKeys = function () {
+const setObjectKeys = () => {
   // From https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
-  Object.keys = function (o) {
+  Object.keys = o => {
     if (o !== Object(o)) {
       throw new TypeError('Object.keys called on a non-object')
     }
-    var k = []
-    var p
+    const k = []
+    let p
     for (p in o) {
       if (Object.prototype.hasOwnProperty.call(o, p)) {
         k.push(p)
@@ -74,18 +74,18 @@ var setObjectKeys = function () {
   }
 }
 
-var getDataArrayFromItem = function (that, item) {
-  var itemDataArray = []
-  for (var i = 0; i < that.options.groupByField.length; i++) {
+const getDataArrayFromItem = (that, item) => {
+  const itemDataArray = []
+  for (let i = 0; i < that.options.groupByField.length; i++) {
     itemDataArray.push(item[that.options.groupByField[i]])
   }
 
   return itemDataArray
 }
 
-var getNewRow = function (that, result, index) {
-  var newRow = {}
-  for (var i = 0; i < that.options.groupByField.length; i++) {
+const getNewRow = (that, result, index) => {
+  const newRow = {}
+  for (let i = 0; i < that.options.groupByField.length; i++) {
     newRow[that.options.groupByField[i].toString()] = result[index][0][that.options.groupByField[i]]
   }
 
@@ -94,27 +94,23 @@ var getNewRow = function (that, result, index) {
   return newRow
 }
 
-const groupBy = function (array, f) {
-  var groups = {}
-  $.each(array, function (i, o) {
-    var group = JSON.stringify(f(o))
+const groupBy = (array, f) => {
+  const groups = {}
+  $.each(array, (i, o) => {
+    const group = JSON.stringify(f(o))
     groups[group] = groups[group] || []
     groups[group].push(o)
   })
-  return Object.keys(groups).map(function (group) {
-    return groups[group]
-  })
+  return Object.keys(groups).map(group => groups[group])
 }
 
-var makeGrouped = function (that, data) {
-  var newData = []
-  var sumRow = {}
+const makeGrouped = (that, data) => {
+  let newData = []
+  let sumRow = {}
 
-  var result = groupBy(data, function (item) {
-    return getDataArrayFromItem(that, item)
-  })
+  const result = groupBy(data, item => getDataArrayFromItem(that, item))
 
-  for (var i = 0; i < result.length; i++) {
+  for (let i = 0; i < result.length; i++) {
     result[i].unshift(getNewRow(that, result, i))
     if (that.options.groupBySumGroup) {
       sumRow = sumData(that, result[i])
@@ -124,7 +120,7 @@ var makeGrouped = function (that, data) {
     }
   }
 
-  newData = newData.concat.apply(newData, result)
+  newData = newData.concat(...result)
 
   if (!that.options.loaded && newData.length > 0) {
     that.options.loaded = true
@@ -151,15 +147,15 @@ $.extend($.fn.bootstrapTable.COLUMN_DEFAULTS, {
   groupBySumGroup: false
 })
 
-var BootstrapTable = $.fn.bootstrapTable.Constructor
-var _init = BootstrapTable.prototype.init
-var _initData = BootstrapTable.prototype.initData
+const BootstrapTable = $.fn.bootstrapTable.Constructor
+const _init = BootstrapTable.prototype.init
+const _initData = BootstrapTable.prototype.initData
 
-BootstrapTable.prototype.init = function () {
+BootstrapTable.prototype.init = function (...args) {
   // Temporal validation
   if (!this.options.sortName) {
     if ((this.options.groupBy) && (this.options.groupByField.length > 0)) {
-      var that = this
+      const that = this
 
       // Compatibility: IE < 9 and old browsers
       if (!Object.keys) {
@@ -172,15 +168,15 @@ BootstrapTable.prototype.init = function () {
 
       originalRowAttr = this.options.rowAttributes
       this.options.rowAttributes = rowAttr
-      this.$el.off('post-body.bs.table').on('post-body.bs.table', function () {
+      this.$el.off('post-body.bs.table').on('post-body.bs.table', () => {
         that.$el.treetable({
           expandable: true,
-          onNodeExpand: function () {
+          onNodeExpand () {
             if (that.options.height) {
               that.resetHeader()
             }
           },
-          onNodeCollapse: function () {
+          onNodeCollapse () {
             if (that.options.height) {
               that.resetHeader()
             }
@@ -197,7 +193,7 @@ BootstrapTable.prototype.init = function () {
       })
     }
   }
-  _init.apply(this, Array.prototype.slice.apply(arguments))
+  _init.apply(this, Array.prototype.slice.apply(args))
 }
 
 BootstrapTable.prototype.initData = function (data, type) {

+ 92 - 96
src/extensions/multiple-sort/bootstrap-table-multiple-sort.js

@@ -5,27 +5,27 @@
  * Modification: ErwannNevou <https://github.com/ErwannNevou>
  */
 
-var isSingleSort = false
+let isSingleSort = false
 
-var showSortModal = function (that) {
-  var _selector = that.sortModalSelector
-  var _id = '#' + _selector
+const showSortModal = that => {
+  const _selector = that.sortModalSelector
+  const _id = `#${_selector}`
 
   if (!$(_id).hasClass('modal')) {
-    var sModal = '  <div class="modal fade" id="' + _selector + '" tabindex="-1" role="dialog" aria-labelledby="' + _selector + 'Label" aria-hidden="true">'
+    let sModal = `  <div class="modal fade" id="${_selector}" tabindex="-1" role="dialog" aria-labelledby="${_selector}Label" aria-hidden="true">`
     sModal += '         <div class="modal-dialog">'
     sModal += '             <div class="modal-content">'
     sModal += '                 <div class="modal-header">'
     sModal += '                     <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>'
-    sModal += '                     <h4 class="modal-title" id="' + _selector + 'Label">' + that.options.formatMultipleSort() + '</h4>'
+    sModal += `                     <h4 class="modal-title" id="${_selector}Label">${that.options.formatMultipleSort()}</h4>`
     sModal += '                 </div>'
     sModal += '                 <div class="modal-body">'
     sModal += '                     <div class="bootstrap-table">'
     sModal += '                         <div class="fixed-table-toolbar">'
     sModal += '                             <div class="bars">'
     sModal += '                                 <div id="toolbar">'
-    sModal += '                                     <button id="add" type="button" class="btn btn-default"><i class="' + that.options.iconsPrefix + ' ' + that.options.icons.plus + '"></i> ' + that.options.formatAddLevel() + '</button>'
-    sModal += '                                     <button id="delete" type="button" class="btn btn-default" disabled><i class="' + that.options.iconsPrefix + ' ' + that.options.icons.minus + '"></i> ' + that.options.formatDeleteLevel() + '</button>'
+    sModal += `                                     <button id="add" type="button" class="btn btn-default"><i class="${that.options.iconsPrefix} ${that.options.icons.plus}"></i> ${that.options.formatAddLevel()}</button>`
+    sModal += `                                     <button id="delete" type="button" class="btn btn-default" disabled><i class="${that.options.iconsPrefix} ${that.options.icons.minus}"></i> ${that.options.formatDeleteLevel()}</button>`
     sModal += '                                 </div>'
     sModal += '                             </div>'
     sModal += '                         </div>'
@@ -34,8 +34,8 @@ var showSortModal = function (that) {
     sModal += '                                 <thead>'
     sModal += '                                     <tr>'
     sModal += '                                         <th></th>'
-    sModal += '                                         <th><div class="th-inner">' + that.options.formatColumn() + '</div></th>'
-    sModal += '                                         <th><div class="th-inner">' + that.options.formatOrder() + '</div></th>'
+    sModal += `                                         <th><div class="th-inner">${that.options.formatColumn()}</div></th>`
+    sModal += `                                         <th><div class="th-inner">${that.options.formatOrder()}</div></th>`
     sModal += '                                     </tr>'
     sModal += '                                 </thead>'
     sModal += '                                 <tbody></tbody>'
@@ -44,8 +44,8 @@ var showSortModal = function (that) {
     sModal += '                     </div>'
     sModal += '                 </div>'
     sModal += '                 <div class="modal-footer">'
-    sModal += '                     <button type="button" class="btn btn-default" data-dismiss="modal">' + that.options.formatCancel() + '</button>'
-    sModal += '                     <button type="button" class="btn btn-primary">' + that.options.formatSort() + '</button>'
+    sModal += `                     <button type="button" class="btn btn-default" data-dismiss="modal">${that.options.formatCancel()}</button>`
+    sModal += `                     <button type="button" class="btn btn-primary">${that.options.formatSort()}</button>`
     sModal += '                 </div>'
     sModal += '             </div>'
     sModal += '         </div>'
@@ -54,11 +54,11 @@ var showSortModal = function (that) {
     $('body').append($(sModal))
 
     that.$sortModal = $(_id)
-    var $rows = that.$sortModal.find('tbody > tr')
+    const $rows = that.$sortModal.find('tbody > tr')
 
-    that.$sortModal.off('click', '#add').on('click', '#add', function () {
-      var total = that.$sortModal.find('.multi-sort-name:first option').length
-      var current = that.$sortModal.find('tbody tr').length
+    that.$sortModal.off('click', '#add').on('click', '#add', () => {
+      const total = that.$sortModal.find('.multi-sort-name:first option').length
+      let current = that.$sortModal.find('tbody tr').length
 
       if (current < total) {
         current++
@@ -67,9 +67,9 @@ var showSortModal = function (that) {
       }
     })
 
-    that.$sortModal.off('click', '#delete').on('click', '#delete', function () {
-      var total = that.$sortModal.find('.multi-sort-name:first option').length
-      var current = that.$sortModal.find('tbody tr').length
+    that.$sortModal.off('click', '#delete').on('click', '#delete', () => {
+      const total = that.$sortModal.find('.multi-sort-name:first option').length
+      let current = that.$sortModal.find('tbody tr').length
 
       if (current > 1 && current <= total) {
         current--
@@ -78,17 +78,17 @@ var showSortModal = function (that) {
       }
     })
 
-    that.$sortModal.off('click', '.btn-primary').on('click', '.btn-primary', function () {
-      var $rows = that.$sortModal.find('tbody > tr')
-      var $alert = that.$sortModal.find('div.alert')
-      var fields = []
-      var results = []
+    that.$sortModal.off('click', '.btn-primary').on('click', '.btn-primary', () => {
+      const $rows = that.$sortModal.find('tbody > tr')
+      let $alert = that.$sortModal.find('div.alert')
+      const fields = []
+      const results = []
 
 
-      that.options.sortPriority = $.map($rows, function (row) {
-        var $row = $(row)
-        var name = $row.find('.multi-sort-name').val()
-        var order = $row.find('.multi-sort-order').val()
+      that.options.sortPriority = $.map($rows, row => {
+        const $row = $(row)
+        const name = $row.find('.multi-sort-name').val()
+        const order = $row.find('.multi-sort-order').val()
 
         fields.push(name)
 
@@ -98,9 +98,9 @@ var showSortModal = function (that) {
         }
       })
 
-      var sorted_fields = fields.sort()
+      const sorted_fields = fields.sort()
 
-      for (var i = 0; i < fields.length - 1; i++) {
+      for (let i = 0; i < fields.length - 1; i++) {
         if (sorted_fields[i + 1] === sorted_fields[i]) {
           results.push(sorted_fields[i])
         }
@@ -108,7 +108,7 @@ var showSortModal = function (that) {
 
       if (results.length > 0) {
         if ($alert.length === 0) {
-          $alert = '<div class="alert alert-danger" role="alert"><strong>' + that.options.formatDuplicateAlertTitle() + '</strong> ' + that.options.formatDuplicateAlertDescription() + '</div>'
+          $alert = `<div class="alert alert-danger" role="alert"><strong>${that.options.formatDuplicateAlertTitle()}</strong> ${that.options.formatDuplicateAlertDescription()}</div>`
           $($alert).insertBefore(that.$sortModal.find('.bars'))
         }
       } else {
@@ -120,8 +120,8 @@ var showSortModal = function (that) {
         that.options.sortName = ''
 
         if (that.options.sidePagination === 'server') {
-          var t = that.options.queryParams
-          that.options.queryParams = function (params) {
+          const t = that.options.queryParams
+          that.options.queryParams = params => {
             params.multiSort = that.options.sortPriority
             return $.fn.bootstrapTable.utils.calculateObjectValue(that.options, t, [params])
           }
@@ -145,7 +145,7 @@ var showSortModal = function (that) {
 
     if (that.options.sortPriority !== null && that.options.sortPriority.length > 0) {
       if ($rows.length < that.options.sortPriority.length && typeof that.options.sortPriority === 'object') {
-        for (var i = 0; i < that.options.sortPriority.length; i++) {
+        for (let i = 0; i < that.options.sortPriority.length; i++) {
           that.addLevel(i, that.options.sortPriority[i])
         }
       }
@@ -163,7 +163,7 @@ $.extend($.fn.bootstrapTable.defaults, {
   showMultiSort: false,
   showMultiSortButton: true,
   sortPriority: null,
-  onMultipleSort: function () {
+  onMultipleSort () {
     return false
   }
 })
@@ -179,40 +179,40 @@ $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
 })
 
 $.extend($.fn.bootstrapTable.locales, {
-  formatMultipleSort: function () {
+  formatMultipleSort () {
     return 'Multiple Sort'
   },
-  formatAddLevel: function () {
+  formatAddLevel () {
     return 'Add Level'
   },
-  formatDeleteLevel: function () {
+  formatDeleteLevel () {
     return 'Delete Level'
   },
-  formatColumn: function () {
+  formatColumn () {
     return 'Column'
   },
-  formatOrder: function () {
+  formatOrder () {
     return 'Order'
   },
-  formatSortBy: function () {
+  formatSortBy () {
     return 'Sort by'
   },
-  formatThenBy: function () {
+  formatThenBy () {
     return 'Then by'
   },
-  formatSort: function () {
+  formatSort () {
     return 'Sort'
   },
-  formatCancel: function () {
+  formatCancel () {
     return 'Cancel'
   },
-  formatDuplicateAlertTitle: function () {
+  formatDuplicateAlertTitle () {
     return 'Duplicate(s) detected!'
   },
-  formatDuplicateAlertDescription: function () {
+  formatDuplicateAlertDescription () {
     return 'Please remove or change any duplicate column.'
   },
-  formatSortOrders: function () {
+  formatSortOrders () {
     return {
       asc: 'Ascending',
       desc: 'Descending'
@@ -222,34 +222,34 @@ $.extend($.fn.bootstrapTable.locales, {
 
 $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales)
 
-var BootstrapTable = $.fn.bootstrapTable.Constructor
-var _initToolbar = BootstrapTable.prototype.initToolbar
+const BootstrapTable = $.fn.bootstrapTable.Constructor
+const _initToolbar = BootstrapTable.prototype.initToolbar
 
-BootstrapTable.prototype.initToolbar = function () {
+BootstrapTable.prototype.initToolbar = function (...args) {
   this.showToolbar = this.showToolbar || this.options.showMultiSort
-  var that = this
-  var sortModalSelector = 'sortModal_' + this.$el.attr('id')
-  var sortModalId = '#' + sortModalSelector
+  const that = this
+  const sortModalSelector = `sortModal_${this.$el.attr('id')}`
+  const sortModalId = `#${sortModalSelector}`
   this.$sortModal = $(sortModalId)
   this.sortModalSelector = sortModalSelector
 
-  _initToolbar.apply(this, Array.prototype.slice.apply(arguments))
+  _initToolbar.apply(this, Array.prototype.slice.apply(args))
 
   if (that.options.sidePagination === 'server' && !isSingleSort && that.options.sortPriority !== null) {
-    var t = that.options.queryParams
-    that.options.queryParams = function (params) {
+    const t = that.options.queryParams
+    that.options.queryParams = params => {
       params.multiSort = that.options.sortPriority
       return t(params)
     }
   }
 
   if (this.options.showMultiSort) {
-    var $btnGroup = this.$toolbar.find('>.btn-group').first()
-    var $multiSortBtn = this.$toolbar.find('div.multi-sort')
+    const $btnGroup = this.$toolbar.find('>.btn-group').first()
+    let $multiSortBtn = this.$toolbar.find('div.multi-sort')
 
     if (!$multiSortBtn.length && this.options.showMultiSortButton) {
-      $multiSortBtn = '  <button class="multi-sort btn btn-default' + (this.options.iconSize === undefined ? '' : ' btn-' + this.options.iconSize) + '" type="button" data-toggle="modal" data-target="' + sortModalId + '" title="' + this.options.formatMultipleSort() + '">'
-      $multiSortBtn += '     <i class="' + this.options.iconsPrefix + ' ' + this.options.icons.sort + '"></i>'
+      $multiSortBtn = `  <button class="multi-sort btn btn-default${this.options.iconSize === undefined ? '' : ` btn-${this.options.iconSize}`}" type="button" data-toggle="modal" data-target="${sortModalId}" title="${this.options.formatMultipleSort()}">`
+      $multiSortBtn += `     <i class="${this.options.iconsPrefix} ${this.options.icons.sort}"></i>`
       $multiSortBtn += '</button>'
 
       $btnGroup.append($multiSortBtn)
@@ -257,22 +257,22 @@ BootstrapTable.prototype.initToolbar = function () {
       showSortModal(that)
     }
 
-    this.$el.on('sort.bs.table', function () {
+    this.$el.on('sort.bs.table', () => {
       isSingleSort = true
     })
 
-    this.$el.on('multiple-sort.bs.table', function () {
+    this.$el.on('multiple-sort.bs.table', () => {
       isSingleSort = false
     })
 
-    this.$el.on('load-success.bs.table', function () {
+    this.$el.on('load-success.bs.table', () => {
       if (!isSingleSort && that.options.sortPriority !== null && typeof that.options.sortPriority === 'object' && that.options.sidePagination !== 'server') {
         that.onMultipleSort()
       }
     })
 
-    this.$el.on('column-switch.bs.table', function (field, checked) {
-      for (var i = 0; i < that.options.sortPriority.length; i++) {
+    this.$el.on('column-switch.bs.table', (field, checked) => {
+      for (let i = 0; i < that.options.sortPriority.length; i++) {
         if (that.options.sortPriority[i].sortName === checked) {
           that.options.sortPriority.splice(i, 1)
         }
@@ -283,7 +283,7 @@ BootstrapTable.prototype.initToolbar = function () {
       showSortModal(that)
     })
 
-    this.$el.on('reset-view.bs.table', function () {
+    this.$el.on('reset-view.bs.table', () => {
       if (!isSingleSort && that.options.sortPriority !== null && typeof that.options.sortPriority === 'object') {
         that.assignSortableArrows()
       }
@@ -292,27 +292,25 @@ BootstrapTable.prototype.initToolbar = function () {
 }
 
 BootstrapTable.prototype.multipleSort = function () {
-  var that = this
+  const that = this
   if (!isSingleSort && that.options.sortPriority !== null && typeof that.options.sortPriority === 'object' && that.options.sidePagination !== 'server') {
     that.onMultipleSort()
   }
 }
 
 BootstrapTable.prototype.onMultipleSort = function () {
-  var that = this
+  const that = this
 
-  var cmp = function (x, y) {
-    return x > y ? 1 : x < y ? -1 : 0
-  }
+  const cmp = (x, y) => x > y ? 1 : x < y ? -1 : 0
 
-  var arrayCmp = function (a, b) {
-    var arr1 = []
-    var arr2 = []
+  const arrayCmp = (a, b) => {
+    const arr1 = []
+    const arr2 = []
 
-    for (var i = 0; i < that.options.sortPriority.length; i++) {
-      var order = that.options.sortPriority[i].sortOrder === 'desc' ? -1 : 1
-      var aa = a[that.options.sortPriority[i].sortName]
-      var bb = b[that.options.sortPriority[i].sortName]
+    for (let i = 0; i < that.options.sortPriority.length; i++) {
+      const order = that.options.sortPriority[i].sortOrder === 'desc' ? -1 : 1
+      let aa = a[that.options.sortPriority[i].sortName]
+      let bb = b[that.options.sortPriority[i].sortName]
 
       if (aa === undefined || aa === null) {
         aa = ''
@@ -337,9 +335,7 @@ BootstrapTable.prototype.onMultipleSort = function () {
     return cmp(arr1, arr2)
   }
 
-  this.data.sort(function (a, b) {
-    return arrayCmp(a, b)
-  })
+  this.data.sort((a, b) => arrayCmp(a, b))
 
   this.initBody()
   this.assignSortableArrows()
@@ -347,7 +343,7 @@ BootstrapTable.prototype.onMultipleSort = function () {
 }
 
 BootstrapTable.prototype.addLevel = function (index, sortPriority) {
-  var text = index === 0 ? this.options.formatSortBy() : this.options.formatThenBy()
+  const text = index === 0 ? this.options.formatSortBy() : this.options.formatThenBy()
 
   this.$sortModal.find('tbody')
     .append($('<tr>')
@@ -356,32 +352,32 @@ BootstrapTable.prototype.addLevel = function (index, sortPriority) {
       .append($('<td>').append($('<select class="form-control multi-sort-order">')))
     )
 
-  var $multiSortName = this.$sortModal.find('.multi-sort-name').last()
-  var $multiSortOrder = this.$sortModal.find('.multi-sort-order').last()
+  const $multiSortName = this.$sortModal.find('.multi-sort-name').last()
+  const $multiSortOrder = this.$sortModal.find('.multi-sort-order').last()
 
-  $.each(this.columns, function (i, column) {
+  $.each(this.columns, (i, column) => {
     if (column.sortable === false || column.visible === false) {
       return true
     }
-    $multiSortName.append('<option value="' + column.field + '">' + column.title + '</option>')
+    $multiSortName.append(`<option value="${column.field}">${column.title}</option>`)
   })
 
-  $.each(this.options.formatSortOrders(), function (value, order) {
-    $multiSortOrder.append('<option value="' + value + '">' + order + '</option>')
+  $.each(this.options.formatSortOrders(), (value, order) => {
+    $multiSortOrder.append(`<option value="${value}">${order}</option>`)
   })
 
   if (sortPriority !== undefined) {
-    $multiSortName.find('option[value="' + sortPriority.sortName + '"]').attr('selected', true)
-    $multiSortOrder.find('option[value="' + sortPriority.sortOrder + '"]').attr('selected', true)
+    $multiSortName.find(`option[value="${sortPriority.sortName}"]`).attr('selected', true)
+    $multiSortOrder.find(`option[value="${sortPriority.sortOrder}"]`).attr('selected', true)
   }
 }
 
 BootstrapTable.prototype.assignSortableArrows = function () {
-  var that = this
-  var headers = that.$header.find('th')
+  const that = this
+  const headers = that.$header.find('th')
 
-  for (var i = 0; i < headers.length; i++) {
-    for (var c = 0; c < that.options.sortPriority.length; c++) {
+  for (let i = 0; i < headers.length; i++) {
+    for (let c = 0; c < that.options.sortPriority.length; c++) {
       if ($(headers[i]).data('field') === that.options.sortPriority[c].sortName) {
         $(headers[i]).find('.sortable').removeClass('desc asc').addClass(that.options.sortPriority[c].sortOrder)
       }
@@ -390,8 +386,8 @@ BootstrapTable.prototype.assignSortableArrows = function () {
 }
 
 BootstrapTable.prototype.setButtonStates = function () {
-  var total = this.$sortModal.find('.multi-sort-name:first option').length
-  var current = this.$sortModal.find('tbody tr').length
+  const total = this.$sortModal.find('.multi-sort-name:first option').length
+  const current = this.$sortModal.find('tbody tr').length
 
   if (current === total) {
     this.$sortModal.find('#add').attr('disabled', 'disabled')

+ 32 - 32
src/extensions/pipeline/bootstrap-table-pipeline.js

@@ -47,15 +47,15 @@
  *
  **/
 
-var Utils = $.fn.bootstrapTable.utils
+const Utils = $.fn.bootstrapTable.utils
 
 $.extend($.fn.bootstrapTable.defaults, {
   usePipeline: false,
   pipelineSize: 1000,
-  onCachedDataHit: function (data) {
+  onCachedDataHit (data) {
     return false
   },
-  onCachedDataReset: function (data) {
+  onCachedDataReset (data) {
     return false
   }
 })
@@ -65,17 +65,17 @@ $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
   'cached-data-reset.bs.table': 'onCachedDataReset'
 })
 
-var BootstrapTable = $.fn.bootstrapTable.Constructor
-var _init = BootstrapTable.prototype.init
-var _initServer = BootstrapTable.prototype.initServer
-var _onSearch = BootstrapTable.prototype.onSearch
-var _onSort = BootstrapTable.prototype.onSort
-var _onPageListChange = BootstrapTable.prototype.onPageListChange
+const BootstrapTable = $.fn.bootstrapTable.Constructor
+const _init = BootstrapTable.prototype.init
+const _initServer = BootstrapTable.prototype.initServer
+const _onSearch = BootstrapTable.prototype.onSearch
+const _onSort = BootstrapTable.prototype.onSort
+const _onPageListChange = BootstrapTable.prototype.onPageListChange
 
-BootstrapTable.prototype.init = function () {
+BootstrapTable.prototype.init = function (...args) {
   // needs to be called before initServer()
   this.initPipeline()
-  _init.apply(this, Array.prototype.slice.apply(arguments))
+  _init.apply(this, Array.prototype.slice.apply(args))
 }
 
 BootstrapTable.prototype.initPipeline = function () {
@@ -103,14 +103,14 @@ BootstrapTable.prototype.onSort = function (event) {
 
 BootstrapTable.prototype.onPageListChange = function (event) {
   /* rebuild cache window on page size change */
-  var target = $(event.currentTarget)
-  var newPageSize = parseInt(target.text())
+  const target = $(event.currentTarget)
+  const newPageSize = parseInt(target.text())
   this.options.pipelineSize = this.calculatePipelineSize(this.options.pipelineSize, newPageSize)
   this.resetCache = true
   _onPageListChange.apply(this, Array.prototype.slice.apply(arguments))
 }
 
-BootstrapTable.prototype.calculatePipelineSize = function (pipelineSize, pageSize) {
+BootstrapTable.prototype.calculatePipelineSize = (pipelineSize, pageSize) => {
   /* calculate pipeline size by rounding up to the nearest value evenly divisible
         * by the pageSize */
   if (pageSize === 0) return 0
@@ -121,9 +121,9 @@ BootstrapTable.prototype.setCacheWindows = function () {
   /* set cache windows based on the total number of rows returned by server side
         * request and the pipelineSize */
   this.cacheWindows = []
-  var numWindows = this.options.totalRows / this.options.pipelineSize
-  for (var i = 0; i <= numWindows; i++) {
-    var b = i * this.options.pipelineSize
+  const numWindows = this.options.totalRows / this.options.pipelineSize
+  for (let i = 0; i <= numWindows; i++) {
+    const b = i * this.options.pipelineSize
     this.cacheWindows[i] = {'lower': b, 'upper': b + this.options.pipelineSize - 1}
   }
 }
@@ -131,7 +131,7 @@ BootstrapTable.prototype.setCacheWindows = function () {
 BootstrapTable.prototype.setCurrWindow = function (offset) {
   /* set the current cache window index, based on where the current offset falls */
   this.currWindow = 0
-  for (var i = 0; i < this.cacheWindows.length; i++) {
+  for (let i = 0; i < this.cacheWindows.length; i++) {
     if (this.cacheWindows[i].lower <= offset && offset <= this.cacheWindows[i].upper) {
       this.currWindow = i
       break
@@ -141,9 +141,9 @@ BootstrapTable.prototype.setCurrWindow = function (offset) {
 
 BootstrapTable.prototype.drawFromCache = function (offset, limit) {
   /* draw rows from the cache using offset and limit */
-  var res = $.extend(true, {}, this.cacheRequestJSON)
-  var drawStart = offset - this.cacheWindows[this.currWindow].lower
-  var drawEnd = drawStart + limit
+  const res = $.extend(true, {}, this.cacheRequestJSON)
+  const drawStart = offset - this.cacheWindows[this.currWindow].lower
+  const drawEnd = drawStart + limit
   res.rows = res.rows.slice(drawStart, drawEnd)
   return res
 }
@@ -155,16 +155,16 @@ BootstrapTable.prototype.initServer = function (silent, query, url) {
         * initial version of this extension will entirely override base initServer
         **/
 
-  var data = {}
-  var index = this.header.fields.indexOf(this.options.sortName)
+  let data = {}
+  const index = this.header.fields.indexOf(this.options.sortName)
 
-  var params = {
+  let params = {
     searchText: this.searchText,
     sortName: this.options.sortName,
     sortOrder: this.options.sortOrder
   }
 
-  var request = null
+  let request = null
 
   if (this.header.sortNames[index]) {
     params.sortName = this.header.sortNames[index]
@@ -180,7 +180,7 @@ BootstrapTable.prototype.initServer = function (silent, query, url) {
     return
   }
 
-  var useAjax = true
+  let useAjax = true
   if (this.options.queryParamsType === 'limit') {
     params = {
       searchText: params.searchText,
@@ -197,7 +197,7 @@ BootstrapTable.prototype.initServer = function (silent, query, url) {
           params.drawOffset = params.offset
           // cache exists: determine if the page request is entirely within the current cached window
         } else {
-          var w = this.cacheWindows[this.currWindow]
+          const w = this.cacheWindows[this.currWindow]
           // case 1: reset cache but stay within current window (e.g. column sort)
           // case 2: move outside of the current window (e.g. search or paging)
           //  since each cache window is aligned with the current page size
@@ -240,7 +240,7 @@ BootstrapTable.prototype.initServer = function (silent, query, url) {
 
   // cached results can be used
   if (!useAjax) {
-    var res = this.drawFromCache(params.offset, params.limit)
+    const res = this.drawFromCache(params.offset, params.limit)
     this.load(res)
     this.trigger('load-success', res)
     this.trigger('cached-data-hit', res)
@@ -264,7 +264,7 @@ BootstrapTable.prototype.initServer = function (silent, query, url) {
   if (!silent) {
     this.$tableLoading.show()
   }
-  var self = this
+  const self = this
 
   request = $.extend({}, Utils.calculateObjectValue(null, this.options.ajaxOptions), {
     type: this.options.method,
@@ -274,7 +274,7 @@ BootstrapTable.prototype.initServer = function (silent, query, url) {
     cache: this.options.cache,
     contentType: this.options.contentType,
     dataType: this.options.dataType,
-    success: function (res) {
+    success (res) {
       res = Utils.calculateObjectValue(self.options, self.options.responseHandler, [res], res)
       // cache results if using pipelining
       if (self.options.usePipeline) {
@@ -296,8 +296,8 @@ BootstrapTable.prototype.initServer = function (silent, query, url) {
       self.trigger('load-success', res)
       if (!silent) self.$tableLoading.hide()
     },
-    error: function (res) {
-      var data = []
+    error (res) {
+      let data = []
       if (self.options.sidePagination === 'server') {
         data = {}
         data[self.options.totalField] = 0

+ 11 - 13
src/extensions/print/bootstrap-table-print.js

@@ -119,8 +119,8 @@ $.BootstrapTable = class extends $.BootstrapTable {
 
     const buildTable = (data, columnsArray) => {
       const html = ['<table><thead>']
-      for (let k = 0; k < columnsArray.length; k++) {
-        const columns = columnsArray[k]
+
+      for (const columns of columnsArray) {
         html.push('<tr>')
         for (let h = 0; h < columns.length; h++) {
           if (!columns[h].printIgnore) {
@@ -133,18 +133,20 @@ $.BootstrapTable = class extends $.BootstrapTable {
         }
         html.push('</tr>')
       }
+
       html.push('</thead><tbody>')
 
       for (let i = 0; i < data.length; i++) {
         html.push('<tr>')
-        for (let l = 0; l < columnsArray.length; l++) {
-          const columns = columnsArray[l]
+
+        for (const columns of columnsArray) {
           for (let j = 0; j < columns.length; j++) {
             if (!columns[j].printIgnore && columns[j].field) {
               html.push('<td>', formatValue(data[i], i, columns[j]), '</td>')
             }
           }
         }
+
         html.push('</tr>')
       }
       html.push('</tbody></table>')
@@ -169,16 +171,12 @@ $.BootstrapTable = class extends $.BootstrapTable {
       return true
     }
 
-    const filterRows = (data, filters) => {
-      return data.filter(row => filterRow(row,filters))
-    }
+    const filterRows = (data, filters) => data.filter(row => filterRow(row,filters))
 
-    const getColumnFilters = columns => {
-      return !columns || !columns[0] ? [] : columns[0].filter(col => col.printFilter).map(col => ({
-        colName: col.field,
-        value: col.printFilter
-      }))
-    }
+    const getColumnFilters = columns => !columns || !columns[0] ? [] : columns[0].filter(col => col.printFilter).map(col => ({
+      colName: col.field,
+      value: col.printFilter
+    }))
 
     data = filterRows(data,getColumnFilters(this.options.columns))
     data = sortRows(data, this.options.printSortColumn, this.options.printSortOrder)

+ 34 - 38
src/extensions/reorder-columns/bootstrap-table-reorder-columns.js

@@ -5,26 +5,24 @@
  */
 
 // From MDN site, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
-var filterFn = function () {
+const filterFn = () => {
   if (!Array.prototype.filter) {
     Array.prototype.filter = function (fun/* , thisArg*/) {
-      'use strict'
-
       if (this === undefined || this === null) {
         throw new TypeError()
       }
 
-      var t = Object(this)
-      var len = t.length >>> 0
+      const t = Object(this)
+      const len = t.length >>> 0
       if (typeof fun !== 'function') {
         throw new TypeError()
       }
 
-      var res = []
-      var thisArg = arguments.length >= 2 ? arguments[1] : undefined
-      for (var i = 0; i < len; i++) {
+      const res = []
+      const thisArg = arguments.length >= 2 ? arguments[1] : undefined
+      for (let i = 0; i < len; i++) {
         if (i in t) {
-          var val = t[i]
+          const val = t[i]
 
           // NOTE: Technically this should Object.defineProperty at
           //       the next index, as push can be affected by
@@ -45,7 +43,7 @@ var filterFn = function () {
 $.extend($.fn.bootstrapTable.defaults, {
   reorderableColumns: false,
   maxMovingRows: 10,
-  onReorderColumn: function (headerFields) {
+  onReorderColumn (headerFields) {
     return false
   },
   dragaccept: null
@@ -55,14 +53,14 @@ $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
   'reorder-column.bs.table': 'onReorderColumn'
 })
 
-var BootstrapTable = $.fn.bootstrapTable.Constructor
-var _initHeader = BootstrapTable.prototype.initHeader
-var _toggleColumn = BootstrapTable.prototype.toggleColumn
-var _toggleView = BootstrapTable.prototype.toggleView
-var _resetView = BootstrapTable.prototype.resetView
+const BootstrapTable = $.fn.bootstrapTable.Constructor
+const _initHeader = BootstrapTable.prototype.initHeader
+const _toggleColumn = BootstrapTable.prototype.toggleColumn
+const _toggleView = BootstrapTable.prototype.toggleView
+const _resetView = BootstrapTable.prototype.resetView
 
-BootstrapTable.prototype.initHeader = function () {
-  _initHeader.apply(this, Array.prototype.slice.apply(arguments))
+BootstrapTable.prototype.initHeader = function (...args) {
+  _initHeader.apply(this, Array.prototype.slice.apply(args))
 
   if (!this.options.reorderableColumns) {
     return
@@ -71,8 +69,8 @@ BootstrapTable.prototype.initHeader = function () {
   this.makeRowsReorderable()
 }
 
-BootstrapTable.prototype.toggleColumn = function () {
-  _toggleColumn.apply(this, Array.prototype.slice.apply(arguments))
+BootstrapTable.prototype.toggleColumn = function (...args) {
+  _toggleColumn.apply(this, Array.prototype.slice.apply(args))
 
   if (!this.options.reorderableColumns) {
     return
@@ -81,8 +79,8 @@ BootstrapTable.prototype.toggleColumn = function () {
   this.makeRowsReorderable()
 }
 
-BootstrapTable.prototype.toggleView = function () {
-  _toggleView.apply(this, Array.prototype.slice.apply(arguments))
+BootstrapTable.prototype.toggleView = function (...args) {
+  _toggleView.apply(this, Array.prototype.slice.apply(args))
 
   if (!this.options.reorderableColumns) {
     return
@@ -95,8 +93,8 @@ BootstrapTable.prototype.toggleView = function () {
   this.makeRowsReorderable()
 }
 
-BootstrapTable.prototype.resetView = function () {
-  _resetView.apply(this, Array.prototype.slice.apply(arguments))
+BootstrapTable.prototype.resetView = function (...args) {
+  _resetView.apply(this, Array.prototype.slice.apply(args))
 
   if (!this.options.reorderableColumns) {
     return
@@ -106,7 +104,7 @@ BootstrapTable.prototype.resetView = function () {
 }
 
 BootstrapTable.prototype.makeRowsReorderable = function () {
-  var that = this
+  const that = this
   try {
     $(this.$el).dragtable('destroy')
   } catch (e) {
@@ -116,13 +114,13 @@ BootstrapTable.prototype.makeRowsReorderable = function () {
     maxMovingRows: that.options.maxMovingRows,
     dragaccept: that.options.dragaccept,
     clickDelay: 200,
-    beforeStop: function () {
-      var ths = []
-      var formatters = []
-      var columns = []
-      var columnsHidden = []
-      var columnIndex = -1
-      var optionsColumns = []
+    beforeStop () {
+      const ths = []
+      const formatters = []
+      const columns = []
+      let columnsHidden = []
+      let columnIndex = -1
+      const optionsColumns = []
       that.$header.find('th').each(function (i) {
         ths.push($(this).data('field'))
         formatters.push($(this).data('formatter'))
@@ -130,9 +128,7 @@ BootstrapTable.prototype.makeRowsReorderable = function () {
 
       // Exist columns not shown
       if (ths.length < that.columns.length) {
-        columnsHidden = $.grep(that.columns, function (column) {
-          return !column.visible
-        })
+        columnsHidden = that.columns.filter(column => !column.visible)
         for (var i = 0; i < columnsHidden.length; i++) {
           ths.push(columnsHidden[i].field)
           formatters.push(columnsHidden[i].formatter)
@@ -151,10 +147,10 @@ BootstrapTable.prototype.makeRowsReorderable = function () {
       that.columns = that.columns.concat(columns)
 
       filterFn() // Support <IE9
-      $.each(that.columns, function (i, column) {
-        var found = false
-        var field = column.field
-        that.options.columns[0].filter(function (item) {
+      $.each(that.columns, (i, column) => {
+        let found = false
+        const field = column.field
+        that.options.columns[0].filter(item => {
           if (!found && item['field'] === field) {
             optionsColumns.push(item)
             found = true

+ 27 - 29
src/extensions/reorder-rows/bootstrap-table-reorder-rows.js

@@ -4,13 +4,11 @@
  * @version: v1.0.1
  */
 
-var isSearch = false
+const isSearch = false
 
-var rowAttr = function (row, index) {
-  return {
-    id: 'customId_' + index
-  }
-}
+const rowAttr = (row, index) => ({
+  id: `customId_${index}`
+})
 
 $.extend($.fn.bootstrapTable.defaults, {
   reorderableRows: false,
@@ -19,13 +17,13 @@ $.extend($.fn.bootstrapTable.defaults, {
   onDragClass: 'reorder_rows_onDragClass',
   dragHandle: null,
   useRowAttrFunc: false,
-  onReorderRowsDrag: function (table, row) {
+  onReorderRowsDrag (table, row) {
     return false
   },
-  onReorderRowsDrop: function (table, row) {
+  onReorderRowsDrop (table, row) {
     return false
   },
-  onReorderRow: function (newData) {
+  onReorderRow (newData) {
     return false
   }
 })
@@ -34,35 +32,35 @@ $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
   'reorder-row.bs.table': 'onReorderRow'
 })
 
-var BootstrapTable = $.fn.bootstrapTable.Constructor
-var _init = BootstrapTable.prototype.init
-var _initSearch = BootstrapTable.prototype.initSearch
+const BootstrapTable = $.fn.bootstrapTable.Constructor
+const _init = BootstrapTable.prototype.init
+const _initSearch = BootstrapTable.prototype.initSearch
 
-BootstrapTable.prototype.init = function () {
+BootstrapTable.prototype.init = function (...args) {
 
   if (!this.options.reorderableRows) {
-    _init.apply(this, Array.prototype.slice.apply(arguments))
+    _init.apply(this, Array.prototype.slice.apply(args))
     return
   }
 
-  var that = this
+  const that = this
   if (this.options.useRowAttrFunc) {
     this.options.rowAttributes = rowAttr
   }
 
-  var onPostBody = this.options.onPostBody
-  this.options.onPostBody = function () {
-    setTimeout(function () {
+  const onPostBody = this.options.onPostBody
+  this.options.onPostBody = () => {
+    setTimeout(() => {
       that.makeRowsReorderable()
       onPostBody.apply()
     }, 1)
   }
 
-  _init.apply(this, Array.prototype.slice.apply(arguments))
+  _init.apply(this, Array.prototype.slice.apply(args))
 }
 
-BootstrapTable.prototype.initSearch = function () {
-  _initSearch.apply(this, Array.prototype.slice.apply(arguments))
+BootstrapTable.prototype.initSearch = function (...args) {
+  _initSearch.apply(this, Array.prototype.slice.apply(args))
 
   if (!this.options.reorderableRows) {
     return
@@ -77,7 +75,7 @@ BootstrapTable.prototype.makeRowsReorderable = function () {
     return
   }
 
-  var that = this
+  const that = this
   this.$el.tableDnD({
     onDragStyle: that.options.onDragStyle,
     onDropStyle: that.options.onDropStyle,
@@ -88,14 +86,14 @@ BootstrapTable.prototype.makeRowsReorderable = function () {
   })
 }
 
-BootstrapTable.prototype.onDrop = function (table, droppedRow) {
-  var tableBs = $(table)
-  var tableBsData = tableBs.data('bootstrap.table')
-  var tableBsOptions = tableBs.data('bootstrap.table').options
-  var row = null
-  var newData = []
+BootstrapTable.prototype.onDrop = (table, droppedRow) => {
+  const tableBs = $(table)
+  const tableBsData = tableBs.data('bootstrap.table')
+  const tableBsOptions = tableBs.data('bootstrap.table').options
+  let row = null
+  const newData = []
 
-  for (var i = 0; i < table.tBodies[0].rows.length; i++) {
+  for (let i = 0; i < table.tBodies[0].rows.length; i++) {
     row = $(table.tBodies[0].rows[i])
     newData.push(tableBsOptions.data[row.data('index')])
     row.data('index', i).attr('data-index', i)

+ 18 - 20
src/extensions/resizable/bootstrap-table-resizable.js

@@ -4,23 +4,21 @@
  * @version: v2.0.0
  */
 
-var isInit = function (that) {
-  return that.$el.data('resizableColumns') !== undefined
-}
+const isInit = that => that.$el.data('resizableColumns') !== undefined
 
-var initResizable = function (that) {
+const initResizable = that => {
   if (that.options.resizable && !that.options.cardView && !isInit(that)) {
     that.$el.resizableColumns()
   }
 }
 
-var destroy = function (that) {
+const destroy = that => {
   if (isInit(that)) {
     that.$el.data('resizableColumns').destroy()
   }
 }
 
-var reInitResizable = function (that) {
+const reInitResizable = that => {
   destroy(that)
   initResizable(that)
 }
@@ -29,24 +27,24 @@ $.extend($.fn.bootstrapTable.defaults, {
   resizable: false
 })
 
-var BootstrapTable = $.fn.bootstrapTable.Constructor
-var _initBody = BootstrapTable.prototype.initBody
-var _toggleView = BootstrapTable.prototype.toggleView
-var _resetView = BootstrapTable.prototype.resetView
+const BootstrapTable = $.fn.bootstrapTable.Constructor
+const _initBody = BootstrapTable.prototype.initBody
+const _toggleView = BootstrapTable.prototype.toggleView
+const _resetView = BootstrapTable.prototype.resetView
 
-BootstrapTable.prototype.initBody = function () {
-  var that = this
-  _initBody.apply(this, Array.prototype.slice.apply(arguments))
+BootstrapTable.prototype.initBody = function (...args) {
+  const that = this
+  _initBody.apply(this, Array.prototype.slice.apply(args))
 
   that.$el
     .off('column-switch.bs.table, page-change.bs.table')
-    .on('column-switch.bs.table, page-change.bs.table', function () {
+    .on('column-switch.bs.table, page-change.bs.table', () => {
       reInitResizable(that)
     })
 }
 
-BootstrapTable.prototype.toggleView = function () {
-  _toggleView.apply(this, Array.prototype.slice.apply(arguments))
+BootstrapTable.prototype.toggleView = function (...args) {
+  _toggleView.apply(this, Array.prototype.slice.apply(args))
 
   if (this.options.resizable && this.options.cardView) {
     // Destroy the plugin
@@ -54,14 +52,14 @@ BootstrapTable.prototype.toggleView = function () {
   }
 }
 
-BootstrapTable.prototype.resetView = function () {
-  var that = this
+BootstrapTable.prototype.resetView = function (...args) {
+  const that = this
 
-  _resetView.apply(this, Array.prototype.slice.apply(arguments))
+  _resetView.apply(this, Array.prototype.slice.apply(args))
 
   if (this.options.resizable) {
     // because in fitHeader function, we use setTimeout(func, 100);
-    setTimeout(function () {
+    setTimeout(() => {
       initResizable(that)
     }, 100)
   }

+ 65 - 65
src/extensions/select2-filter/bootstrap-table-select2-filter.js

@@ -4,7 +4,7 @@
  */
 
 function getCurrentHeader (that) {
-  var header = that.$header
+  let header = that.$header
   if (that.options.height) {
     header = that.$tableHeader
   }
@@ -14,17 +14,17 @@ function getCurrentHeader (that) {
 
 function initFilterValues (that) {
   if (!$.isEmptyObject(that.filterColumnsPartial)) {
-    var $header = getCurrentHeader(that)
+    const $header = getCurrentHeader(that)
 
-    $.each(that.columns, function (idx, column) {
-      var value = that.filterColumnsPartial[column.field]
+    $.each(that.columns, (idx, column) => {
+      const value = that.filterColumnsPartial[column.field]
 
       if (column.filter) {
         if (column.filter.setFilterValue) {
-          var $filter = $header.find('[data-field=' + column.field + '] .filter')
+          const $filter = $header.find(`[data-field=${column.field}] .filter`)
           column.filter.setFilterValue($filter, column.field, value)
         } else {
-          var $ele = $header.find('[data-filter-field=' + column.field + ']')
+          const $ele = $header.find(`[data-filter-field=${column.field}]`)
           switch (column.filter.type) {
             case 'input':
               $ele.val(value)
@@ -42,12 +42,12 @@ function initFilterValues (that) {
 }
 
 function createFilter (that, header) {
-  var enableFilter = false
-  var isVisible
-  var html
-  var timeoutId = 0
+  let enableFilter = false
+  let isVisible
+  let html
+  let timeoutId = 0
 
-  $.each(that.columns, function (i, column) {
+  $.each(that.columns, (i, column) => {
     isVisible = 'hidden'
     html = null
 
@@ -58,8 +58,8 @@ function createFilter (that, header) {
     if (!column.filter) {
       html = $('<div class="no-filter"></div>')
     } else {
-      var filterClass = column.filter.class ? ' ' + column.filter.class : ''
-      html = $('<div style="margin: 0px 2px 2px 2px;" class="filter' + filterClass + '">')
+      const filterClass = column.filter.class ? ` ${column.filter.class}` : ''
+      html = $(`<div style="margin: 0px 2px 2px 2px;" class="filter${filterClass}">`)
 
       if (column.searchable) {
         enableFilter = true
@@ -69,48 +69,48 @@ function createFilter (that, header) {
       if (column.filter.template) {
         html.append(column.filter.template(that, column, isVisible))
       } else {
-        var $filter = $(that.options.filterTemplate[column.filter.type.toLowerCase()](that, column, isVisible))
+        const $filter = $(that.options.filterTemplate[column.filter.type.toLowerCase()](that, column, isVisible))
 
         switch (column.filter.type) {
           case 'input':
-            var cpLock = true
-            $filter.off('compositionstart').on('compositionstart', function (event) {
+            let cpLock = true
+            $filter.off('compositionstart').on('compositionstart', event => {
               cpLock = false
             })
 
             $filter.off('compositionend').on('compositionend', function (event) {
               cpLock = true
-              var $input = $(this)
+              const $input = $(this)
               clearTimeout(timeoutId)
-              timeoutId = setTimeout(function () {
+              timeoutId = setTimeout(() => {
                 that.onColumnSearch(event, column.field, $input.val())
               }, that.options.searchTimeOut)
             })
 
             $filter.off('keyup').on('keyup', function (event) {
               if (cpLock) {
-                var $input = $(this)
+                const $input = $(this)
                 clearTimeout(timeoutId)
-                timeoutId = setTimeout(function () {
+                timeoutId = setTimeout(() => {
                   that.onColumnSearch(event, column.field, $input.val())
                 }, that.options.searchTimeOut)
               }
             })
 
             $filter.off('mouseup').on('mouseup', function (event) {
-              var $input = $(this)
-              var oldValue = $input.val()
+              const $input = $(this)
+              const oldValue = $input.val()
 
               if (oldValue === '') {
                 return
               }
 
-              setTimeout(function () {
-                var newValue = $input.val()
+              setTimeout(() => {
+                const newValue = $input.val()
 
                 if (newValue === '') {
                   clearTimeout(timeoutId)
-                  timeoutId = setTimeout(function () {
+                  timeoutId = setTimeout(() => {
                     that.onColumnSearch(event, column.field, newValue)
                   }, that.options.searchTimeOut)
                 }
@@ -123,7 +123,7 @@ function createFilter (that, header) {
             })
 
             $filter.on('select2:unselecting', function (event) {
-              var $select2 = $(this)
+              const $select2 = $(this)
               event.preventDefault()
               $select2.val(null).trigger('change')
               that.searchText = undefined
@@ -138,7 +138,7 @@ function createFilter (that, header) {
       }
     }
 
-    $.each(header.children().children(), function (i, tr) {
+    $.each(header.children().children(), (i, tr) => {
       tr = $(tr)
       if (tr.data('field') === column.field) {
         tr.find('.fht-cell').append(html)
@@ -153,14 +153,14 @@ function createFilter (that, header) {
 }
 
 function initSelect2 (that) {
-  var $header = getCurrentHeader(that)
+  const $header = getCurrentHeader(that)
 
-  $.each(that.columns, function (idx, column) {
+  $.each(that.columns, (idx, column) => {
     if (column.filter && column.filter.type === 'select') {
-      var $selectEle = $header.find('select[data-filter-field="' + column.field + '"]')
+      const $selectEle = $header.find(`select[data-filter-field="${column.field}"]`)
 
       if ($selectEle.length > 0 && !$selectEle.data().select2) {
-        var select2Opts = {
+        const select2Opts = {
           placeholder: '',
           allowClear: true,
           data: column.filter.data,
@@ -177,14 +177,14 @@ $.extend($.fn.bootstrapTable.defaults, {
   filter: false,
   filterValues: {},
   filterTemplate: {
-    input: function (instance, column, isVisible) {
-      return '<input type="text" class="form-control" data-filter-field="' + column.field + '" style="width: 100%; visibility:' + isVisible + '">'
+    input (instance, column, isVisible) {
+      return `<input type="text" class="form-control" data-filter-field="${column.field}" style="width: 100%; visibility:${isVisible}">`
     },
-    select: function (instance, column, isVisible) {
-      return '<select data-filter-field="' + column.field + '" style="width: 100%; visibility:' + isVisible + '"></select>'
+    select (instance, column, isVisible) {
+      return `<select data-filter-field="${column.field}" style="width: 100%; visibility:${isVisible}"></select>`
     }
   },
-  onColumnSearch: function (field, text) {
+  onColumnSearch (field, text) {
     return false
   }
 })
@@ -197,15 +197,15 @@ $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
   'column-search.bs.table': 'onColumnSearch'
 })
 
-var BootstrapTable = $.fn.bootstrapTable.Constructor
-var _init = BootstrapTable.prototype.init
-var _initHeader = BootstrapTable.prototype.initHeader
-var _initSearch = BootstrapTable.prototype.initSearch
+const BootstrapTable = $.fn.bootstrapTable.Constructor
+const _init = BootstrapTable.prototype.init
+const _initHeader = BootstrapTable.prototype.initHeader
+const _initSearch = BootstrapTable.prototype.initSearch
 
-BootstrapTable.prototype.init = function () {
+BootstrapTable.prototype.init = function (...args) {
   // Make sure that the filtercontrol option is set
   if (this.options.filter) {
-    var that = this
+    const that = this
 
     if (that.options.filterTemplate) {
       that.options.filterTemplate = $.extend({}, $.fn.bootstrapTable.defaults.filterTemplate, that.options.filterTemplate)
@@ -216,7 +216,7 @@ BootstrapTable.prototype.init = function () {
       that.options.filterValues = {}
     }
 
-    this.$el.on('reset-view.bs.table', function () {
+    this.$el.on('reset-view.bs.table', () => {
       // Create controls on $tableHeader if the height is set
       if (!that.options.height) {
         return
@@ -228,41 +228,41 @@ BootstrapTable.prototype.init = function () {
       }
 
       createFilter(that, that.$tableHeader)
-    }).on('post-header.bs.table', function () {
-      var timeoutId = 0
+    }).on('post-header.bs.table', () => {
+      let timeoutId = 0
 
       initSelect2(that)
       clearTimeout(timeoutId)
-      timeoutId = setTimeout(function () {
+      timeoutId = setTimeout(() => {
         initFilterValues(that)
       }, that.options.searchTimeOut - 1000)
-    }).on('column-switch.bs.table', function (field, checked) {
+    }).on('column-switch.bs.table', (field, checked) => {
       initFilterValues(that)
     })
   }
 
-  _init.apply(this, Array.prototype.slice.apply(arguments))
+  _init.apply(this, Array.prototype.slice.apply(args))
 }
 
-BootstrapTable.prototype.initHeader = function () {
-  _initHeader.apply(this, Array.prototype.slice.apply(arguments))
+BootstrapTable.prototype.initHeader = function (...args) {
+  _initHeader.apply(this, Array.prototype.slice.apply(args))
   if (this.options.filter) {
     createFilter(this, this.$header)
   }
 }
 
-BootstrapTable.prototype.initSearch = function () {
-  var that = this
-  var filterValues = that.filterColumnsPartial
+BootstrapTable.prototype.initSearch = function (...args) {
+  const that = this
+  const filterValues = that.filterColumnsPartial
 
   // Filter for client
   if (that.options.sidePagination === 'client') {
-    this.data = $.grep(this.data, function (row, idx) {
-      for (var field in filterValues) {
+    this.data = this.data.filter((row, idx) => {
+      for (const field in filterValues) {
         if (Object.prototype.hasOwnProperty(field, filterValues)) {
-          var column = that.columns[that.fieldsColumnsIndex[field]]
-          var filterValue = filterValues[field].toLowerCase()
-          var rowValue = row[field]
+          const column = that.columns[that.fieldsColumnsIndex[field]]
+          const filterValue = filterValues[field].toLowerCase()
+          let rowValue = row[field]
 
           rowValue = $.fn.bootstrapTable.utils.calculateObjectValue(
             that.header,
@@ -277,7 +277,7 @@ BootstrapTable.prototype.initSearch = function () {
           } else {
             if (!($.inArray(field, that.header.fields) !== -1 &&
               (typeof rowValue === 'string' || typeof rowValue === 'number') &&
-              (rowValue + '').toLowerCase().indexOf(filterValue) !== -1)) {
+              (`${rowValue}`).toLowerCase().includes(filterValue))) {
               return false
             }
           }
@@ -288,7 +288,7 @@ BootstrapTable.prototype.initSearch = function () {
     })
   }
 
-  _initSearch.apply(this, Array.prototype.slice.apply(arguments))
+  _initSearch.apply(this, Array.prototype.slice.apply(args))
 }
 
 BootstrapTable.prototype.onColumnSearch = function (event, field, value) {
@@ -308,18 +308,18 @@ BootstrapTable.prototype.onColumnSearch = function (event, field, value) {
 }
 
 BootstrapTable.prototype.setSelect2Data = function (field, data) {
-  var that = this
-  var $header = getCurrentHeader(that)
-  var $selectEle = $header.find('select[data-filter-field="' + field + '"]')
+  const that = this
+  const $header = getCurrentHeader(that)
+  const $selectEle = $header.find(`select[data-filter-field="${field}"]`)
   $selectEle.empty()
   $selectEle.select2({
-    data: data,
+    data,
     placeholder: '',
     allowClear: true,
     dropdownParent: that.$el.closest('.bootstrap-table')
   })
 
-  $.each(this.columns, function (idx, column) {
+  $.each(this.columns, (idx, column) => {
     if (column.field === field) {
       column.filter.data = data
       return false

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

@@ -183,7 +183,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
 
     const fp = $.isEmptyObject(this.filterColumnsPartial) ? null : this.filterColumnsPartial
 
-    this.data = fp ? $.grep(this.data, (item, i) => {
+    this.data = fp ? this.data.filter((item, i) => {
       for (const [key, v] of Object.entries(fp)) {
         const fval = v.toLowerCase()
         let value = item[key]

+ 38 - 38
src/extensions/tree-column/bootstrap-table-tree-column.js

@@ -14,68 +14,68 @@ $.extend($.fn.bootstrapTable.defaults, {
   treeNodecls: 'node',
   treeCellcls: 'treenode',
   treeTextcls: 'text',
-  onTreeFormatter: function (row) {
-    var that = this
-    var options = that.options
-    var level = row._level || 0
-    var plevel = row._parent && row._parent._level || 0
-    var paddings = []
+  onTreeFormatter (row) {
+    const that = this
+    const options = that.options
+    const level = row._level || 0
+    const plevel = row._parent && row._parent._level || 0
+    const paddings = []
     for (var i = 0; i < plevel; i++) {
-      paddings.push('<i class="' + options.treeVerticalcls + '"></i>')
-      paddings.push('<i class="' + options.treeSpacecls + '"></i>')
+      paddings.push(`<i class="${options.treeVerticalcls}"></i>`)
+      paddings.push(`<i class="${options.treeSpacecls}"></i>`)
     }
 
     for (let i = plevel; i < level; i++) {
       if (row._last && i === (level - 1)) {
-        paddings.push('<i class="' + options.treeVerticalLastcls + '"></i>')
+        paddings.push(`<i class="${options.treeVerticalLastcls}"></i>`)
       } else {
-        paddings.push('<i class="' + options.treeVerticalcls + '"></i>')
+        paddings.push(`<i class="${options.treeVerticalcls}"></i>`)
       }
-      paddings.push('<i class="' + options.treeNodecls + '"></i>')
+      paddings.push(`<i class="${options.treeNodecls}"></i>`)
     }
     return paddings.join('')
-  }, onGetNodes: function (row, data) {
-    var that = this
-    var nodes = []
-    $.each(data, function (i, item) {
+  }, onGetNodes (row, data) {
+    const that = this
+    const nodes = []
+    $.each(data, (i, item) => {
       if (row[that.options.idField] === item[that.options.parentIdField]) {
         nodes.push(item)
       }
     })
     return nodes
   },
-  onCheckLeaf: function (row, data) {
+  onCheckLeaf (row, data) {
     if (row.isLeaf !== undefined) {
       return row.isLeaf
     }
     return !row._nodes || !row._nodes.length
-  }, onCheckRoot: function (row, data) {
-    var that = this
+  }, onCheckRoot (row, data) {
+    const that = this
     return !row[that.options.parentIdField]
   }
 })
 
-var BootstrapTable = $.fn.bootstrapTable.Constructor
-var _initRow = BootstrapTable.prototype.initRow
-var _initHeader = BootstrapTable.prototype.initHeader
+const BootstrapTable = $.fn.bootstrapTable.Constructor
+const _initRow = BootstrapTable.prototype.initRow
+const _initHeader = BootstrapTable.prototype.initHeader
 
-BootstrapTable.prototype.initHeader = function () {
-  var that = this
-  _initHeader.apply(that, Array.prototype.slice.apply(arguments))
-  var treeShowField = that.options.treeShowField
+BootstrapTable.prototype.initHeader = function (...args) {
+  const that = this
+  _initHeader.apply(that, Array.prototype.slice.apply(args))
+  const treeShowField = that.options.treeShowField
   if (treeShowField) {
-    $.each(this.header.fields, function (i, field) {
+    $.each(this.header.fields, (i, field) => {
       if (treeShowField === field) {
         that.treeEnable = true
-        var _formatter = that.header.formatters[i]
-        var _class = [that.options.treeCellcls]
+        const _formatter = that.header.formatters[i]
+        const _class = [that.options.treeCellcls]
         if (that.header.classes[i]) {
           _class.push(that.header.classes[i].split('"')[1] || '')
         }
-        that.header.classes[i] = ' class="' + _class.join(' ') + '"'
+        that.header.classes[i] = ` class="${_class.join(' ')}"`
         that.header.formatters[i] = function (value, row, index) {
-          var colTree = [that.options.onTreeFormatter.apply(that, [row])]
-          colTree.push('<span class="' + that.options.treeTextcls + '">')
+          const colTree = [that.options.onTreeFormatter.apply(that, [row])]
+          colTree.push(`<span class="${that.options.treeTextcls}">`)
           if (_formatter) {
             colTree.push(_formatter.apply(this, Array.prototype.slice.apply(arguments)))
           } else {
@@ -90,14 +90,14 @@ BootstrapTable.prototype.initHeader = function () {
   }
 }
 
-var initNode = function (item, idx, data, parentDom) {
-  var that = this
-  var nodes = that.options.onGetNodes.apply(that, [item, data])
+const initNode = function (item, idx, data, parentDom) {
+  const that = this
+  const nodes = that.options.onGetNodes.apply(that, [item, data])
   item._nodes = nodes
   parentDom.append(_initRow.apply(that, [item, idx, data, parentDom]))
-  var len = nodes.length - 1
-  for (var i = 0; i <= len; i++) {
-    var node = nodes[i]
+  const len = nodes.length - 1
+  for (let i = 0; i <= len; i++) {
+    const node = nodes[i]
     node._level = item._level + 1
     node._parent = item
     if (i === len)
@@ -108,7 +108,7 @@ var initNode = function (item, idx, data, parentDom) {
 
 
 BootstrapTable.prototype.initRow = function (item, idx, data, parentDom) {
-  var that = this
+  const that = this
   if (that.treeEnable) {
     if (that.options.onCheckRoot.apply(that, [item, data])) {
       if (item._level === undefined) {

+ 26 - 26
src/extensions/treegrid/bootstrap-table-treegrid.js

@@ -8,18 +8,18 @@ $.extend($.fn.bootstrapTable.defaults, {
   idField: 'id',
   parentIdField: 'pid',
   rootParentId: null,
-  onGetNodes: function (row, data) {
-    var that = this
-    var nodes = []
-    $.each(data, function (i, item) {
+  onGetNodes (row, data) {
+    const that = this
+    const nodes = []
+    $.each(data, (i, item) => {
       if (row[that.options.idField] === item[that.options.parentIdField]) {
         nodes.push(item)
       }
     })
     return nodes
   },
-  onCheckRoot: function (row, data) {
-    var that = this
+  onCheckRoot (row, data) {
+    const that = this
     return that.options.rootParentId === row[that.options.parentIdField] ||
               !row[that.options.parentIdField]
   }
@@ -31,18 +31,18 @@ const _initRow = BootstrapTable.prototype.initRow
 const _initHeader = BootstrapTable.prototype.initHeader
 let _rowStyle = null
 
-BootstrapTable.prototype.init = function () {
+BootstrapTable.prototype.init = function (...args) {
   _rowStyle = this.options.rowStyle
-  _init.apply(this, Array.prototype.slice.apply(arguments))
+  _init.apply(this, Array.prototype.slice.apply(args))
 }
 
 // td
-BootstrapTable.prototype.initHeader = function () {
+BootstrapTable.prototype.initHeader = function (...args) {
   const that = this
-  _initHeader.apply(that, Array.prototype.slice.apply(arguments))
+  _initHeader.apply(that, Array.prototype.slice.apply(args))
   const treeShowField = that.options.treeShowField
   if (treeShowField) {
-    $.each(this.header.fields, function (i, field) {
+    $.each(this.header.fields, (i, field) => {
       if (treeShowField === field) {
         that.treeEnable = true
         return false
@@ -52,29 +52,29 @@ BootstrapTable.prototype.initHeader = function () {
 }
 
 const initTr = function (item, idx, data, parentDom) {
-  var that = this
-  var nodes = that.options.onGetNodes.apply(that, [item, data])
+  const that = this
+  const nodes = that.options.onGetNodes.apply(that, [item, data])
   item._nodes = nodes
   parentDom.append(_initRow.apply(that, [item, idx, data, parentDom]))
 
   // init sub node
-  var len = nodes.length - 1
-  for (var i = 0; i <= len; i++) {
-    var node = nodes[i]
-    var defaultItem = $.extend(true, {}, item)
+  const len = nodes.length - 1
+  for (let i = 0; i <= len; i++) {
+    const node = nodes[i]
+    const defaultItem = $.extend(true, {}, item)
     node._level = defaultItem._level + 1
     node._parent = defaultItem
     if (i === len)
       node._last = 1
     // jquery.treegrid.js
     that.options.rowStyle = function (item, idx) {
-      var res = _rowStyle.apply(that, Array.prototype.slice.apply(arguments))
-      var id = item[that.options.idField] ? item[that.options.idField] : 0
-      var pid = item[that.options.parentIdField] ? item[that.options.parentIdField] : 0
+      const res = _rowStyle.apply(that, Array.prototype.slice.apply(arguments))
+      const id = item[that.options.idField] ? item[that.options.idField] : 0
+      const pid = item[that.options.parentIdField] ? item[that.options.parentIdField] : 0
       res.classes = [
         res.classes || '',
-        'treegrid-' + id,
-        'treegrid-parent-' + pid
+        `treegrid-${id}`,
+        `treegrid-parent-${pid}`
       ].join(' ')
       return res
     }
@@ -84,7 +84,7 @@ const initTr = function (item, idx, data, parentDom) {
 
 // tr
 BootstrapTable.prototype.initRow = function (item, idx, data, parentDom) {
-  var that = this
+  const that = this
   if (that.treeEnable) {
     // init root node
     if (that.options.onCheckRoot.apply(that, [item, data])) {
@@ -93,11 +93,11 @@ BootstrapTable.prototype.initRow = function (item, idx, data, parentDom) {
       }
       // jquery.treegrid.js
       that.options.rowStyle = function (item, idx) {
-        var res = _rowStyle.apply(that, Array.prototype.slice.apply(arguments))
-        var x = item[that.options.idField] ? item[that.options.idField] : 0
+        const res = _rowStyle.apply(that, Array.prototype.slice.apply(arguments))
+        const x = item[that.options.idField] ? item[that.options.idField] : 0
         res.classes = [
           res.classes || '',
-          'treegrid-' + x
+          `treegrid-${x}`
         ].join(' ')
         return res
       }

+ 4 - 4
src/locale/bootstrap-table-es-ES.js

@@ -47,19 +47,19 @@ $.fn.bootstrapTable.locales['es-ES'] = {
   formatAutoRefresh () {
     return 'Auto Refresh'
   },
-  formatExport: function () {
+  formatExport () {
     return 'Exportar los datos'
   },
-  formatClearFilters: function () {
+  formatClearFilters () {
     return 'Borrar los filtros'
   },
   formatJumpTo () {
     return 'GO'
   },
-  formatAdvancedSearch: function () {
+  formatAdvancedSearch () {
     return 'Búsqueda avanzada'
   },
-  formatAdvancedCloseButton: function () {
+  formatAdvancedCloseButton () {
     return 'Cerrar'
   }
 }