mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-15 13:45:25 +08:00
46 lines
1.6 KiB
JavaScript
46 lines
1.6 KiB
JavaScript
export default {
|
|
template: `
|
|
<div class="w-full grid items-center group gap-2 grid-cols-[auto_1.5rem]"
|
|
:class="{'cursor-pointer': params.enableSorting}"
|
|
:data-e2e="'e2e-CO-tableHeader-' + params.column.colId "
|
|
@click="onSortRequested((activeSort == 'asc' ? 'desc' : 'asc'), $event)">
|
|
<div v-if="params.html" class="customHeaderLabel truncate" v-html="params.html"></div>
|
|
<div v-else class="customHeaderLabel truncate">{{ params.displayName }}</div>
|
|
<div v-if="activeSort == 'asc'" class="customSortDownLabel text-sn-black" data-e2e="e2e-BT-tableHeader-sortedAsc">
|
|
<i class="sn-icon sn-icon-sort-up"></i>
|
|
</div>
|
|
<div v-if="activeSort == 'desc'" class="customSortUpLabel text-sn-black" data-e2e="e2e-BT-tableHeader-sortedDesc">
|
|
<i class="sn-icon sn-icon-sort-down"></i>
|
|
</div>
|
|
<div v-if="activeSort == null && params.enableSorting" class="text-sn-black tw-hidden group-hover:block" data-e2e="e2e-BT-tableHeader-sortUpDown">
|
|
<i class="sn-icon sn-icon-sort"></i>
|
|
</div>
|
|
</div>
|
|
`,
|
|
data() {
|
|
return {
|
|
activeSort: null
|
|
};
|
|
},
|
|
beforeMount() {},
|
|
mounted() {
|
|
this.params.column.addEventListener('sortChanged', this.onSortChanged);
|
|
this.onSortChanged();
|
|
},
|
|
methods: {
|
|
onSortChanged() {
|
|
this.activeSort = null;
|
|
if (this.params.column.isSortAscending()) {
|
|
this.activeSort = 'asc';
|
|
} else if (this.params.column.isSortDescending()) {
|
|
this.activeSort = 'desc';
|
|
}
|
|
},
|
|
|
|
onSortRequested(order, event) {
|
|
if (!this.params.enableSorting) return;
|
|
|
|
this.params.setSort(order, event.shiftKey);
|
|
}
|
|
}
|
|
};
|