From 0590f74635ff4629067fb01705463d1fd8bf3961 Mon Sep 17 00:00:00 2001 From: Torben Hansen <derhansen@gmail.com> Date: Sat, 27 Nov 2021 07:14:48 +0100 Subject: [PATCH] [BUGFIX] Fix JavaScript error in configuration module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When performing a search in the configuration module, a JavaScript error will occur, if a possible expanded tree node is not part of the search result. This patch adds checks for existence of the scrollElement variable. Resolves: #96097 Releases: master, 11.5 Change-Id: I5977dd48487563ae30407f8cf126724acc9bcb0a Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/72320 Tested-by: core-ci <typo3@b13.com> Tested-by: Stefan Bürk <stefan@buerk.tech> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> Reviewed-by: Benni Mack <benni@typo3.org> Reviewed-by: Stefan Bürk <stefan@buerk.tech> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> --- .../Resources/Public/TypeScript/ConfigurationView.ts | 10 ++++++---- .../Resources/Public/JavaScript/ConfigurationView.js | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Build/Sources/TypeScript/lowlevel/Resources/Public/TypeScript/ConfigurationView.ts b/Build/Sources/TypeScript/lowlevel/Resources/Public/TypeScript/ConfigurationView.ts index 14b7af246130..913d2d1db0db 100644 --- a/Build/Sources/TypeScript/lowlevel/Resources/Public/TypeScript/ConfigurationView.ts +++ b/Build/Sources/TypeScript/lowlevel/Resources/Public/TypeScript/ConfigurationView.ts @@ -37,13 +37,15 @@ class ConfigurationView { // scroll page down, so the just opened subtree is visible after reload and not hidden by doc header // Determine scrollTo position, either first ".active" (search) or latest clicked element let scrollElement = document.querySelector(self.location.hash); - if(document.querySelector('.list-tree .active ')) { + if (document.querySelector('.list-tree .active ')) { scrollElement = document.querySelector('.list-tree .active '); - } else { - document.querySelector(self.location.hash).parentElement.parentElement.classList.add('active'); + } else if (scrollElement) { + scrollElement.parentElement.parentElement.classList.add('active'); } - scrollElement.scrollIntoView({ block: 'center' }); + if (scrollElement) { + scrollElement.scrollIntoView({ block: 'center' }); + } } } } diff --git a/typo3/sysext/lowlevel/Resources/Public/JavaScript/ConfigurationView.js b/typo3/sysext/lowlevel/Resources/Public/JavaScript/ConfigurationView.js index 6b79a9b67ef7..4c3f45522afb 100644 --- a/typo3/sysext/lowlevel/Resources/Public/JavaScript/ConfigurationView.js +++ b/typo3/sysext/lowlevel/Resources/Public/JavaScript/ConfigurationView.js @@ -10,4 +10,4 @@ * * The TYPO3 project - inspiring people to share! */ -define(["require","exports","TYPO3/CMS/Core/DocumentService","TYPO3/CMS/Core/Event/RegularEvent"],(function(e,t,r,s){"use strict";return new class{constructor(){if(this.searchForm=document.querySelector("#ConfigurationView"),this.searchField=this.searchForm.querySelector('input[name="searchString"]'),this.searchResultShown=""!==this.searchField.value,r.ready().then(()=>{new s("search",()=>{""===this.searchField.value&&this.searchResultShown&&this.searchForm.submit()}).bindTo(this.searchField)}),self.location.hash){let e=document.querySelector(self.location.hash);document.querySelector(".list-tree .active ")?e=document.querySelector(".list-tree .active "):document.querySelector(self.location.hash).parentElement.parentElement.classList.add("active"),e.scrollIntoView({block:"center"})}}}})); \ No newline at end of file +define(["require","exports","TYPO3/CMS/Core/DocumentService","TYPO3/CMS/Core/Event/RegularEvent"],(function(e,t,r,s){"use strict";return new class{constructor(){if(this.searchForm=document.querySelector("#ConfigurationView"),this.searchField=this.searchForm.querySelector('input[name="searchString"]'),this.searchResultShown=""!==this.searchField.value,r.ready().then(()=>{new s("search",()=>{""===this.searchField.value&&this.searchResultShown&&this.searchForm.submit()}).bindTo(this.searchField)}),self.location.hash){let e=document.querySelector(self.location.hash);document.querySelector(".list-tree .active ")?e=document.querySelector(".list-tree .active "):e&&e.parentElement.parentElement.classList.add("active"),e&&e.scrollIntoView({block:"center"})}}}})); \ No newline at end of file -- GitLab