/** * Adds one biography textarea field per language in the user profile. */ const pllDescription = { /** * Init. */ init: () => { if ( ! pllDescriptionData ) { return; } if ( document.readyState !== 'loading' ) { pllDescription.ready(); } else { document.addEventListener( 'DOMContentLoaded', pllDescription.ready ); } }, /** * Called when the DOM is ready. */ ready: () => { const originTextarea = document.getElementById( 'description' ); if ( ! originTextarea ) { return; } const rows = []; pllDescriptionData.forEach( ( data ) => { const wrapper = document.createElement( 'div' ); wrapper.setAttribute( 'lang', data.lang ); const label = document.createElement( 'label' ); label.setAttribute( 'for', `description_${ data.slug }` ); label.setAttribute( 'dir', data.direction ); if ( data.flag.src ) { const img = document.createElement( 'img' ); img.setAttribute( 'alt', '' ); img.setAttribute( 'src', data.flag.src ); if ( data.flag.width ) { img.setAttribute( 'width', data.flag.width ); } if ( data.flag.height ) { img.setAttribute( 'height', data.flag.height ); } label.textContent = ` ${ data.name }`; label.prepend( img ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.prepend } else { label.textContent = data.name; } const textarea = originTextarea.cloneNode( true ); textarea.setAttribute( 'id', `description_${ data.slug }` ); textarea.setAttribute( 'name', `description_${ data.slug }` ); textarea.setAttribute( 'dir', data.direction ); textarea.innerHTML = data.description; // phpcs:ignore WordPressVIPMinimum.JS.InnerHTML.Found wrapper.append( label, document.createElement( 'br' ), textarea ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.append rows.push( wrapper ); } ); originTextarea.replaceWith( ...rows ); // phpcs:ignore WordPressVIPMinimum.JS.HTMLExecutingFunctions.replaceWith }, }; pllDescription.init();