@@ -267,9 +267,29 @@ export default class ColumnManager {
267267 . then ( ( ) => this . instance . unfreeze ( ) )
268268 . then ( ( ) => {
269269 this . fireEvent ( 'onSortColumn' , this . getColumn ( colIndex ) ) ;
270+ this . setSortState ( ) ;
270271 } ) ;
271272 }
272273
274+ saveSorting ( colIndex ) {
275+ let currentColumn = this . getColumn ( colIndex ) ;
276+ let saveSorting = {
277+ [ currentColumn . name ] : {
278+ colIndex : colIndex ,
279+ sortOrder : currentColumn . sortOrder
280+ }
281+ } ;
282+ this . sortingKey = this . options . sortingKey ? `${ this . options . sortingKey } ::sortedColumns` : 'sortedColumns' ;
283+ localStorage . setItem ( this . sortingKey , JSON . stringify ( saveSorting ) ) ;
284+ }
285+ setSortState ( sortOrder ) {
286+ if ( sortOrder === 'none' ) {
287+ this . sortState = false ;
288+ } else {
289+ this . sortState = true ;
290+ }
291+ }
292+
273293 removeColumn ( colIndex ) {
274294 const removedCol = this . getColumn ( colIndex ) ;
275295 this . instance . freeze ( ) ;
@@ -368,6 +388,19 @@ export default class ColumnManager {
368388 }
369389 }
370390
391+ applySavedSortOrder ( ) {
392+
393+ let key = this . options . sortingKey ? `${ this . options . sortingKey } ::sortedColumns` : 'sortedColumns' ;
394+ let sortingConfig = JSON . parse ( localStorage . getItem ( key ) ) ;
395+ if ( sortingConfig ) {
396+ const columnsToSort = Object . values ( sortingConfig ) ;
397+ for ( let column of columnsToSort ) {
398+ this . sortColumn ( column . colIndex , column . sortOrder ) ;
399+ this . sortState = true ;
400+ }
401+ }
402+ }
403+
371404 sortRows ( colIndex , sortOrder ) {
372405 return this . datamanager . sortRows ( colIndex , sortOrder ) ;
373406 }
@@ -443,13 +476,21 @@ export default class ColumnManager {
443476
444477 getDropdownListHTML ( ) {
445478 const { headerDropdown : dropdownItems } = this . options ;
446-
447479 return `
448- <div class="dt-dropdown__list">
449- ${ dropdownItems . map ( ( d , i ) => `
450- <div class="dt-dropdown__list-item" data-index="${ i } ">${ d . label } </div>
451- ` ) . join ( '' ) }
480+ <div class="dt-dropdown__list">
481+ ${ dropdownItems . map ( ( d , i ) => `
482+ <div
483+ class="dt-dropdown__list-item${ d . display ? ' dt-hidden' : '' } "
484+ data-index="${ i } "
485+ >
486+ ${ d . label }
452487 </div>
453- ` ;
488+ ` ) . join ( '' ) }
489+ </div>
490+ ` ;
491+ }
492+
493+ toggleDropdownItem ( index ) {
494+ $ ( '.dt-dropdown__list' , this . instance . dropdownContainer ) . children [ index ] . classList . toggle ( 'dt-hidden' ) ;
454495 }
455496}
0 commit comments