From aab5f68c78753e23ec5dcce989be6d7ac00aaa01 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 ELEMENTS-1697: update tabindex & lastindex in nuxeo-data-grid --- ui/nuxeo-data-grid/nuxeo-data-grid.js | 28 ++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/ui/nuxeo-data-grid/nuxeo-data-grid.js b/ui/nuxeo-data-grid/nuxeo-data-grid.js index 0756fa70b..c71468602 100644 --- a/ui/nuxeo-data-grid/nuxeo-data-grid.js +++ b/ui/nuxeo-data-grid/nuxeo-data-grid.js @@ -218,16 +218,42 @@ 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.