diff --git a/src/components/SqlTable/index.vue b/src/components/SqlTable/index.vue index 3ff73d7..7fc3a32 100644 --- a/src/components/SqlTable/index.vue +++ b/src/components/SqlTable/index.vue @@ -163,10 +163,15 @@ export default { this.moveFocusInTable(this.selectedCellElement, keyCodeMap[e.keyCode]) }, onCellClick (e) { - this.selectCell(e.target.closest('td')) + this.selectCell(e.target.closest('td'), false) }, - selectCell (cell) { - if (!cell.ariaSelected || cell.ariaSelected === 'false') { + selectCell (cell, scrollTo = true) { + if (!cell) { + if (this.selectedCellElement) { + this.selectedCellElement.ariaSelected = 'false' + } + this.selectedCellElement = cell + } else if (!cell.ariaSelected || cell.ariaSelected === 'false') { if (this.selectedCellElement) { this.selectedCellElement.ariaSelected = 'false' } @@ -177,6 +182,10 @@ export default { this.selectedCellElement = null } + if (this.selectedCellElement && scrollTo) { + this.selectedCellElement.scrollIntoView() + } + this.$emit('updateSelectedCell', this.selectedCellElement) }, moveFocusInTable (initialCell, direction) { @@ -219,7 +228,10 @@ export default { this.resizeObserver.unobserve(this.$refs.table) }, watch: { - currentPageData: 'calculateHeadersWidth', + currentPageData () { + this.calculateHeadersWidth() + this.selectCell(null) + }, dataSet () { this.currentPage = 1 } diff --git a/src/views/Main/Workspace/Tabs/Tab/RunResult/Record/index.vue b/src/views/Main/Workspace/Tabs/Tab/RunResult/Record/index.vue index 514bc61..ef9284d 100644 --- a/src/views/Main/Workspace/Tabs/Tab/RunResult/Record/index.vue +++ b/src/views/Main/Workspace/Tabs/Tab/RunResult/Record/index.vue @@ -96,10 +96,15 @@ export default { this.moveFocusInTable(this.selectedCellElement, keyCodeMap[e.keyCode]) }, onCellClick (e) { - this.selectCell(e.target.closest('td')) + this.selectCell(e.target.closest('td'), false) }, - selectCell (cell) { - if (!cell.ariaSelected || cell.ariaSelected === 'false') { + selectCell (cell, scrollTo = true) { + if (!cell) { + if (this.selectedCellElement) { + this.selectedCellElement.ariaSelected = 'false' + } + this.selectedCellElement = cell + } else if (!cell.ariaSelected || cell.ariaSelected === 'false') { if (this.selectedCellElement) { this.selectedCellElement.ariaSelected = 'false' } @@ -110,6 +115,10 @@ export default { this.selectedCellElement = null } + if (this.selectedCellElement && scrollTo) { + this.selectedCellElement.scrollIntoView() + } + this.$emit('updateSelectedCell', this.selectedCellElement) }, moveFocusInTable (initialCell, direction) { diff --git a/src/views/Main/Workspace/Tabs/Tab/RunResult/index.vue b/src/views/Main/Workspace/Tabs/Tab/RunResult/index.vue index 2a8f469..c5c1252 100644 --- a/src/views/Main/Workspace/Tabs/Tab/RunResult/index.vue +++ b/src/views/Main/Workspace/Tabs/Tab/RunResult/index.vue @@ -185,6 +185,13 @@ export default { beforeDestroy () { this.resizeObserver.unobserve(this.$refs.runResultPanel) }, + watch: { + result () { + this.defaultSelectedCell = null + this.selectedCell = null + this.selectedCellValue = '' + } + }, methods: { handleResize () { this.calculatePageSize()