diff --git a/src/components/datatable/DataTable.vue b/src/components/datatable/DataTable.vue index 5ca1bb344..b7aad9d6f 100755 --- a/src/components/datatable/DataTable.vue +++ b/src/components/datatable/DataTable.vue @@ -19,7 +19,7 @@
{ @@ -509,6 +519,15 @@ export default { return data; }, sortMultiple(value) { + if (this.groupRowsBy && (this.d_groupRowsSortMeta || (this.d_multiSortMeta.length && this.groupRowsBy === this.d_multiSortMeta[0].field))) { + const firstSortMeta = this.d_multiSortMeta[0]; + !this.d_groupRowsSortMeta && (this.d_groupRowsSortMeta = firstSortMeta); + + if (firstSortMeta.field !== this.d_groupRowsSortMeta.field) { + this.d_multiSortMeta = [this.d_groupRowsSortMeta, ...this.d_multiSortMeta]; + } + } + let data = [...value]; data.sort((data1, data2) => { @@ -1818,6 +1837,9 @@ export default { }, attributeSelector() { return UniqueComponentId(); + }, + groupRowSortField() { + return this.sortMode === 'single' ? this.sortField : (this.d_groupRowsSortMeta ? this.d_groupRowsSortMeta.field : null); } }, components: { diff --git a/src/components/datatable/HeaderCell.vue b/src/components/datatable/HeaderCell.vue index 4ac8b16f1..c15c73f40 100644 --- a/src/components/datatable/HeaderCell.vue +++ b/src/components/datatable/HeaderCell.vue @@ -8,7 +8,7 @@ {{columnProp('header')}} - {{getMultiSortMetaIndex() + 1}} + {{getBadgeValue()}} (meta.field === this.columnProp('field') || meta.field === this.columnProp('sortField'))); + }, + getBadgeValue() { + let index = this.getMultiSortMetaIndex(); - for (let i = 0; i < this.multiSortMeta.length; i++) { - let meta = this.multiSortMeta[i]; - if (meta.field === this.columnProp('field') || meta.field === this.columnProp('sortField')) { - index = i; - break; - } - } - - return index; + return (this.groupRowsBy && this.groupRowsBy === this.groupRowSortField) && index > -1 ? index : index + 1; }, isMultiSorted() { - return this.columnProp('sortable') && this.getMultiSortMetaIndex() > -1 + return this.sortMode === 'multiple' && this.columnProp('sortable') && this.getMultiSortMetaIndex() > -1 }, isColumnSorted() { return this.sortMode === 'single' ? (this.sortField && (this.sortField === this.columnProp('field') || this.sortField === this.columnProp('sortField'))) : this.isMultiSorted(); diff --git a/src/components/datatable/TableHeader.vue b/src/components/datatable/TableHeader.vue index d88f016e7..193d2f443 100755 --- a/src/components/datatable/TableHeader.vue +++ b/src/components/datatable/TableHeader.vue @@ -6,7 +6,7 @@