diff --git a/src/bootstrap-table.js b/src/bootstrap-table.js index 73c8c3600f..638c3129ed 100644 --- a/src/bootstrap-table.js +++ b/src/bootstrap-table.js @@ -1562,7 +1562,7 @@ class BootstrapTable { } const tds = this.header.fields.map((field, j) => { - const column = this.columns[j] + const column = this.options.columns[0][j] const value_ = Utils.getItemField(item, field, this.options.escape, column.escape) let value = '' const attrs = { diff --git a/src/extensions/cookie/bootstrap-table-cookie.js b/src/extensions/cookie/bootstrap-table-cookie.js index 43e75924eb..eda0aa66d1 100644 --- a/src/extensions/cookie/bootstrap-table-cookie.js +++ b/src/extensions/cookie/bootstrap-table-cookie.js @@ -407,11 +407,40 @@ $.BootstrapTable = class extends $.BootstrapTable { initHeader (...args) { if (this.options.reorderableColumns && this.options.cookie) { + if (this.columnsSortOrder) { + this.options.columns[0] = this.reorderColumnsFromCookies(this.columnsSortOrder) + } this.columnsSortOrder = JSON.parse(UtilsCookie.getCookie(this, UtilsCookie.cookieIds.reorderColumns)) } super.initHeader(...args) } + reorderColumnsFromCookies (reorderedColumns) { + const reorderedList = [] + const notInReorderedList = [] + const reorderedKeys = Object.keys(reorderedColumns) + + this.options.columns[0].forEach(column => { + if (reorderedKeys.includes(column.field)) { + const fieldIndex = reorderedColumns[column.field] - 1 + + reorderedList[fieldIndex] = column + } else { + notInReorderedList.push(column) + } + }) + + let finalList = [...reorderedList, ...notInReorderedList] + + finalList = finalList.map((item, index) => { + item.fieldIndex = index + item.colspanIndex = index + return item + }) + + return finalList + } + persistReorderColumnsState (that) { UtilsCookie.setCookie(that, UtilsCookie.cookieIds.reorderColumns, JSON.stringify(that.columnsSortOrder)) }