From 4b54ba6219f0849fc54ebfc5ecdb5e72fb2e3590 Mon Sep 17 00:00:00 2001 From: Andreas Nedbal <andy@pixelde.su> Date: Tue, 5 Mar 2024 09:51:52 +0100 Subject: [PATCH] [TASK] Remove jQuery from @typo3/backend/viewport/content-container Resolves: #103279 Releases: main Change-Id: I27d5ec131ded8d2e52104590419ad70af2ab8011 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/83207 Tested-by: Andreas Nedbal <andy@pixelde.su> Tested-by: core-ci <typo3@b13.com> Tested-by: Benni Mack <benni@typo3.org> Reviewed-by: Andreas Nedbal <andy@pixelde.su> Reviewed-by: Andreas Kienast <a.fernandez@scripting-base.de> Reviewed-by: Benni Mack <benni@typo3.org> Tested-by: Andreas Kienast <a.fernandez@scripting-base.de> --- .../TypeScript/backend/viewport/content-container.ts | 11 +++-------- .../Public/JavaScript/viewport/content-container.js | 2 +- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/Build/Sources/TypeScript/backend/viewport/content-container.ts b/Build/Sources/TypeScript/backend/viewport/content-container.ts index d67a6a6b8538..12839a52882d 100644 --- a/Build/Sources/TypeScript/backend/viewport/content-container.ts +++ b/Build/Sources/TypeScript/backend/viewport/content-container.ts @@ -13,7 +13,6 @@ import { ScaffoldIdentifierEnum } from '../enum/viewport/scaffold-identifier'; import { AbstractContainer } from './abstract-container'; -import $ from 'jquery'; import ClientRequest from '../event/client-request'; import InteractionRequest from '../event/interaction-request'; import Loader from './loader'; @@ -21,7 +20,7 @@ import TriggerRequest from '../event/trigger-request'; class ContentContainer extends AbstractContainer { public get(): Window { - return (<HTMLIFrameElement>$(ScaffoldIdentifierEnum.contentModuleIframe)[0]).contentWindow; + return (document.querySelector(ScaffoldIdentifierEnum.contentModuleIframe) as HTMLIFrameElement).contentWindow; } public beforeSetUrl(interactionRequest: InteractionRequest): Promise<void> { @@ -81,12 +80,8 @@ class ContentContainer extends AbstractContainer { return 0; } - private resolveIFrameElement(): HTMLElement { - const $iFrame = $(ScaffoldIdentifierEnum.contentModuleIframe + ':first'); - if ($iFrame.length === 0) { - return null; - } - return $iFrame.get(0); + private resolveIFrameElement(): HTMLElement|null { + return document.querySelector(ScaffoldIdentifierEnum.contentModuleIframe); } private resolveRouterElement(): HTMLElement { diff --git a/typo3/sysext/backend/Resources/Public/JavaScript/viewport/content-container.js b/typo3/sysext/backend/Resources/Public/JavaScript/viewport/content-container.js index a38660b37492..4c1d1d71fe37 100644 --- a/typo3/sysext/backend/Resources/Public/JavaScript/viewport/content-container.js +++ b/typo3/sysext/backend/Resources/Public/JavaScript/viewport/content-container.js @@ -10,4 +10,4 @@ * * The TYPO3 project - inspiring people to share! */ -import{ScaffoldIdentifierEnum}from"@typo3/backend/enum/viewport/scaffold-identifier.js";import{AbstractContainer}from"@typo3/backend/viewport/abstract-container.js";import $ from"jquery";import ClientRequest from"@typo3/backend/event/client-request.js";import InteractionRequest from"@typo3/backend/event/interaction-request.js";import Loader from"@typo3/backend/viewport/loader.js";import TriggerRequest from"@typo3/backend/event/trigger-request.js";class ContentContainer extends AbstractContainer{get(){return $(ScaffoldIdentifierEnum.contentModuleIframe)[0].contentWindow}beforeSetUrl(e){return this.consumerScope.invoke(new TriggerRequest("typo3.beforeSetUrl",e))}setUrl(e,t,r){const n=this.resolveRouterElement();if(null===n)return Promise.reject();t instanceof InteractionRequest||(t=new ClientRequest("typo3.setUrl",null));const o=this.consumerScope.invoke(new TriggerRequest("typo3.setUrl",t));return o.then((()=>{Loader.start(),n.setAttribute("endpoint",e),n.setAttribute("module",r||null),n.parentElement.addEventListener("typo3-module-loaded",(()=>Loader.finish()),{once:!0})})),o}getUrl(){return this.resolveRouterElement().getAttribute("endpoint")}refresh(e){const t=this.resolveIFrameElement();if(null===t)return Promise.reject();const r=this.consumerScope.invoke(new TriggerRequest("typo3.refresh",e));return r.then((()=>{t.contentWindow.location.reload()})),r}getIdFromUrl(){if(this.getUrl()){const e=new URL(this.getUrl(),window.location.origin).searchParams.get("id")??"";return parseInt(e,10)}return 0}resolveIFrameElement(){const e=$(ScaffoldIdentifierEnum.contentModuleIframe+":first");return 0===e.length?null:e.get(0)}resolveRouterElement(){return document.querySelector(ScaffoldIdentifierEnum.contentModuleRouter)}}export default ContentContainer; \ No newline at end of file +import{ScaffoldIdentifierEnum}from"@typo3/backend/enum/viewport/scaffold-identifier.js";import{AbstractContainer}from"@typo3/backend/viewport/abstract-container.js";import ClientRequest from"@typo3/backend/event/client-request.js";import InteractionRequest from"@typo3/backend/event/interaction-request.js";import Loader from"@typo3/backend/viewport/loader.js";import TriggerRequest from"@typo3/backend/event/trigger-request.js";class ContentContainer extends AbstractContainer{get(){return document.querySelector(ScaffoldIdentifierEnum.contentModuleIframe).contentWindow}beforeSetUrl(e){return this.consumerScope.invoke(new TriggerRequest("typo3.beforeSetUrl",e))}setUrl(e,t,r){const n=this.resolveRouterElement();if(null===n)return Promise.reject();t instanceof InteractionRequest||(t=new ClientRequest("typo3.setUrl",null));const o=this.consumerScope.invoke(new TriggerRequest("typo3.setUrl",t));return o.then((()=>{Loader.start(),n.setAttribute("endpoint",e),n.setAttribute("module",r||null),n.parentElement.addEventListener("typo3-module-loaded",(()=>Loader.finish()),{once:!0})})),o}getUrl(){return this.resolveRouterElement().getAttribute("endpoint")}refresh(e){const t=this.resolveIFrameElement();if(null===t)return Promise.reject();const r=this.consumerScope.invoke(new TriggerRequest("typo3.refresh",e));return r.then((()=>{t.contentWindow.location.reload()})),r}getIdFromUrl(){if(this.getUrl()){const e=new URL(this.getUrl(),window.location.origin).searchParams.get("id")??"";return parseInt(e,10)}return 0}resolveIFrameElement(){return document.querySelector(ScaffoldIdentifierEnum.contentModuleIframe)}resolveRouterElement(){return document.querySelector(ScaffoldIdentifierEnum.contentModuleRouter)}}export default ContentContainer; \ No newline at end of file -- GitLab