/** * Handles replacing the bottom row * of the card with customized content. */ /* global frmPlugSearch, JSON */ var FormidablePSH = {}; function frmPS() { FormidablePSH = { $pluginFilter: document.getElementById( 'plugin-filter' ), /** * Get parent search hint element. * @returns {Element | null} */ getCard: function () { return document.querySelector( '.plugin-card-frm-plugin-search' ); }, /** * Replace bottom row of the card to insert logo, text and link to dismiss the card. */ replaceCardBottom: function () { var hint = FormidablePSH.getCard(); if ( 'object' === typeof hint && null !== hint ) { hint.querySelector( '.plugin-card-bottom' ).outerHTML = '
' + '

' + frmPlugSearch.legend + '

' + '
'; // Remove link and parent li from action links and move it to bottom row var dismissLink = document.querySelector( '.frm-plugin-search__dismiss' ); dismissLink.parentNode.parentNode.removeChild( dismissLink.parentNode ); document.querySelector( '.frm-plugin-search__bottom' ).appendChild( dismissLink ); } }, /** * Check if plugin card list nodes changed. If there's a Formidable PSH card, replace the title and the bottom row. * @param {array} mutationsList */ replaceOnNewResults: function ( mutationsList ) { mutationsList.forEach( function ( mutation ) { if ( 'childList' === mutation.type && 1 === document.querySelectorAll( '.plugin-card-frm-plugin-search' ).length ) { FormidablePSH.replaceCardBottom(); } } ); }, /** * Start suggesting. */ init: function () { if ( FormidablePSH.$pluginFilter === null ) { return; } // Replace PSH bottom row on page load FormidablePSH.replaceCardBottom(); // Listen for changes in plugin search results var resultsObserver = new MutationObserver( FormidablePSH.replaceOnNewResults ); resultsObserver.observe( FormidablePSH.$pluginFilter, { childList: true } ); }, }; FormidablePSH.init(); } FormidablePS = frmPS();