rowHeight: 0,
currentIndex: -1,
this.getTableRowHeight();
getTableRowHeight() {
this.$nextTick(() => {
const tableBody = this.$refs.tableRef.$el.querySelector('.el-table__body-wrapper tbody');
if (tableBody && tableBody.rows.length > 0) {
const firstRow = tableBody.rows[0];
const rowHeight = firstRow.clientHeight;
this.rowHeight = rowHeight;
}
});
},
handleKeydown(event) {
if (event.keyCode === 38) {
this.highlightPrevRow();
} else if (event.keyCode === 40) {
this.highlightNextRow();
}
const rowCount = this.boxList.length;
const rowHeight = this.rowHeight;
if (rowCount === 0 || rowCount === undefined || rowHeight === NaN) {
rowHeight = 36;
}
if (event.key === 'ArrowDown') {
event.preventDefault();
if (this.currentIndex < rowCount - 1) {
this.currentIndex++;
this.scrollToRow(this.currentIndex, rowHeight);
}
} else if (event.key === 'ArrowUp') {
event.preventDefault();
if (this.currentIndex > 0) {
this.currentIndex--;
this.scrollToRow(this.currentIndex, rowHeight);
}
}
},
scrollToRow(index, rowHeight) {
const tableBody = this.$refs.tableRef.$el.querySelector('.el-table__body-wrapper');
if (tableBody) {
tableBody.scrollTop = index * rowHeight;
}
},