From eb181b089925b13d8850389d3b99e7af10e9ed76 Mon Sep 17 00:00:00 2001 From: rakeshkumar1019 Date: Mon, 11 Dec 2023 18:39:48 +0530 Subject: [PATCH] ELEMENTS-1697: update tabindex & lastindex in nuxeo-data-grid --- ui/nuxeo-data-grid/nuxeo-data-grid.js | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/ui/nuxeo-data-grid/nuxeo-data-grid.js b/ui/nuxeo-data-grid/nuxeo-data-grid.js index 0756fa70b5..a7232cfb66 100644 --- a/ui/nuxeo-data-grid/nuxeo-data-grid.js +++ b/ui/nuxeo-data-grid/nuxeo-data-grid.js @@ -218,16 +218,40 @@ import { PageProviderDisplayBehavior } from '../nuxeo-page-provider-display-beha type: Boolean, value: false, }, + _lastIndex: { + type: Number, + value: 0, + }, + _lastIndexValue: { + type: Number, + value: 0, + }, }; } + static get observers() { - return ['_fetchMissingItems(loading)']; + return ['_fetchMissingItems(loading)', '_lastIndexChanged(lastIndex)']; } ready() { super.ready(); this.addEventListener('iron-resize', this._fetchMissingItems); + this.addEventListener('keydown', this._handleKeyDown); + } + + _handleKeyDown(event) { + if (event.key === 'Tab') { + if (this.$.list.lastVisibleIndex === this._lastIndexValue || + this.$.list.lastVisibleIndex === this._lastIndexValue - 1 + ) { + this.$.list.scrollTop = 0 + } + } + } + + _lastIndexChanged(lastIndex) { + this._lastIndexValue = lastIndex; } // WEBUI-159: Check if there are more items in viewport than the ones set by the provider and load them.