Originally posted by Mark Hood
View Post
PLFC_DEtails.JPG
<mvt:if expr="NOT ISNULL l.settings:product:customfield_values:customfields :variant_price_range"> &mvt:product:customfield_values:customfields:variant_price_range; <mvt:else> <mvt:if expr="ISNULL l.settings:product:customfield_values:customfields:nobuy"> <mvt:if expr="l.settings:product:price GT '0.00'"> <mvt:if expr="l.settings:product:base_price GT l.settings:product:price"> <span class="x-product-list__price_set"> <span class="x-product-list__price u-text-bold">&mvt:product:formatted_price;</span> <span class="x-product-list__price u-color-gray-500 u-text-medium"><s>&mvt:product:formatted_base_price;</s></span> </span> <mvt:else> <span class="x-product-list__price">&mvt:product:formatted_price;</span> </mvt:if> <mvt:item name="readytheme" param="contentsection( 'mvaffirm_configuration' )" /> </mvt:if></mvt:if> </mvt:if>
(function () { // Get relevant elements and collections const tabbed = document.querySelector('.tabbed'); const tablist = tabbed.querySelector('ul'); const tabs = tablist.querySelectorAll('a'); const panels = tabbed.querySelectorAll('[id^="section"]'); // The tab switching function const switchTab = (oldTab, newTab) => { newTab.focus(); // Make the active tab focusable by the user (Tab key) newTab.removeAttribute('tabindex'); // Set the selected state newTab.setAttribute('aria-selected', 'true'); oldTab.removeAttribute('aria-selected'); oldTab.setAttribute('tabindex', '-1'); // Get the indices of the new and old tabs to find the correct // tab panels to show and hide let index = Array.prototype.indexOf.call(tabs, newTab); let oldIndex = Array.prototype.indexOf.call(tabs, oldTab); panels[oldIndex].hidden = true; panels[index].hidden = false; }; // Add the tablist role to the first <ul> in the .tabbed container tablist.setAttribute('role', 'tablist'); // Add semantics are remove user focusability for each tab Array.prototype.forEach.call(tabs, (tab, i) => { tab.setAttribute('role', 'tab'); tab.setAttribute('id', 'tab' + (i + 1)); tab.setAttribute('tabindex', '-1'); tab.parentNode.setAttribute('role', 'presentation'); // Handle clicking of tabs for mouse users tab.addEventListener('click', e => { e.preventDefault(); let currentTab = tablist.querySelector('[aria-selected]'); if (e.currentTarget !== currentTab) { switchTab(currentTab, e.currentTarget); } }); // Handle keydown events for keyboard users tab.addEventListener('keydown', e => { // Get the index of the current tab in the tabs node list let index = Array.prototype.indexOf.call(tabs, e.currentTarget); // Work out which key the user is pressing and // Calculate the new tab's index where appropriate let dir = e.which === 37 ? index - 1 : e.which === 39 ? index + 1 : e.which === 40 ? 'down' : null; if (dir !== null) { e.preventDefault(); // If the down key is pressed, move focus to the open panel, // otherwise switch to the adjacent tab dir === 'down' ? panels[i].focus() : tabs[dir] ? switchTab(e.currentTarget, tabs[dir]) : void 0; } }); });
Comment