From a4359c91e9bd260e431bfc23d2dbd690ed15b793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20K=C3=BCndig?= Date: Sat, 7 Dec 2019 01:33:06 +0100 Subject: [PATCH] Explicitly pass focused item along as it is already known (#4807) If the DataTable widget is loaded in a Popup, the .focus() call does not seem to focus the target element correctly, which leads to the problem, that the updateCellFromFocusedItem method fails to find the focused item. This commit passes the target item along since it is already known. --- modules/backend/widgets/table/assets/js/build-min.js | 5 +++-- .../widgets/table/assets/js/table.processor.dropdown.js | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/backend/widgets/table/assets/js/build-min.js b/modules/backend/widgets/table/assets/js/build-min.js index 7bac16e12..8c8a8637b 100644 --- a/modules/backend/widgets/table/assets/js/build-min.js +++ b/modules/backend/widgets/table/assets/js/build-min.js @@ -871,7 +871,8 @@ return cachingKey} DropdownProcessor.prototype.getAbsolutePosition=function(element){var top=document.body.scrollTop,left=0 do{top+=element.offsetTop||0;top-=element.scrollTop||0;left+=element.offsetLeft||0;element=element.offsetParent;}while(element) return{top:top,left:left}} -DropdownProcessor.prototype.updateCellFromFocusedItem=function(){var focusedItem=this.findFocusedItem();this.setSelectedItem(focusedItem);} +DropdownProcessor.prototype.updateCellFromFocusedItem=function(focusedItem){if(!focusedItem){focusedItem=this.findFocusedItem();} +this.setSelectedItem(focusedItem);} DropdownProcessor.prototype.findSelectedItem=function(){if(this.itemListElement) return this.itemListElement.querySelector('ul li.selected') return null} @@ -883,7 +884,7 @@ DropdownProcessor.prototype.findFocusedItem=function(){if(this.itemListElement) return this.itemListElement.querySelector('ul li:focus') return null} DropdownProcessor.prototype.onItemClick=function(ev){var target=this.tableObj.getEventTarget(ev) -if(target.tagName=='LI'){target.focus();this.updateCellFromFocusedItem() +if(target.tagName=='LI'){target.focus();this.updateCellFromFocusedItem(target) this.hideDropdown()}} DropdownProcessor.prototype.onItemKeyDown=function(ev){if(!this.itemListElement) return diff --git a/modules/backend/widgets/table/assets/js/table.processor.dropdown.js b/modules/backend/widgets/table/assets/js/table.processor.dropdown.js index 466c71475..3155b8149 100644 --- a/modules/backend/widgets/table/assets/js/table.processor.dropdown.js +++ b/modules/backend/widgets/table/assets/js/table.processor.dropdown.js @@ -270,8 +270,10 @@ } } - DropdownProcessor.prototype.updateCellFromFocusedItem = function() { - var focusedItem = this.findFocusedItem(); + DropdownProcessor.prototype.updateCellFromFocusedItem = function(focusedItem) { + if (!focusedItem) { + focusedItem = this.findFocusedItem(); + } this.setSelectedItem(focusedItem); } @@ -309,7 +311,7 @@ if (target.tagName == 'LI') { target.focus(); - this.updateCellFromFocusedItem() + this.updateCellFromFocusedItem(target) this.hideDropdown() } }