Project

General

Profile

Bug #98121

Updated by Helmut Hummel over 2 years ago

When using the custom element <typo3-backend-icon> 
 with a JS framework, that renders the DOM (e.g. Vue https://github.com/vuejs/core/issues/3738 https://github.com/vuejs/core/issues/3792), 
 it can happen, that they set the properties of the custom element 
 instead of an attribute. 

 Since Lit does not reflect these properties to attributes by default, 
 but the icon-element relies on CSS set on the host element that depends 
 on the size attribute, the icon is not rendered in the correct size. 

 See: https://web.dev/custom-elements-best-practices/ 
 on why reflecting properties to attributes might be a good idea 
 in some cases. 

 To reproduce put the following in a Fluid template of a backend module (TYPO3 12/ main): 


 <pre> 
 <f:be.pageRenderer includeJavaScriptModules="{0: '@typo3/backend/element/icon-element.js'}"/> 
 <div id="app" style="font-size: 8px"></div> 
 <script> 
     let icon = document.createElement('typo3-backend-icon'); 
     icon.identifier = 'actions-search'; 
     icon.size = 'large'; 
     document.getElementById('app').appendChild(icon); 
 </script> 
 </pre> 

 Expected: 

 Large icon 

 Actual: 

 Very small icon 

 For TYPO3 11, the page renderer VH is different: 

 <pre> 
 <f:be.pageRenderer includeRequireJsModules="{0: 'TYPO3/CMS/Backend/Element/IconElement'}"/> 
 </pre> 

 The rest is the same

Back