1/** 2 * Accordion functionality for wine cellar nodes 3 */ 4(function (Drupal) { 5 'use strict'; 6 7 Drupal.behaviors.winecellarAccordions = { 8 attach: function (context, settings) { 9 // Select all accordion items 10 const accordionItems = context.querySelectorAll('.accordion-item'); 11 12 accordionItems.forEach(function(item) { 13 const header = item.querySelector('h4'); 14 15 if (!header) return; 16 17 // Remove any existing click listeners 18 const newHeader = header.cloneNode(true); 19 header.parentNode.replaceChild(newHeader, header); 20 21 // Add click event to header 22 newHeader.addEventListener('click', function() { 23 // Toggle is-open class 24 item.classList.toggle('is-open'); 25 }); 26 }); 27 28 // Add multi-column class only if there are more than 3 items 29 const entityReferenceFields = context.querySelectorAll( 30 '.field--name-field-cellar-or-cava-characteris, ' + 31 '.field--name-field-other-services, ' + 32 '.field--name-field-activities, ' + 33 '.field--name-field-languages, ' + 34 '.field--name-field-food-services, ' + 35 '.field--name-field-celler-o-cava-product-type, ' + 36 '.field--name-field-accessibility, ' + 37 '.field--name-field-accomodation-type, ' + 38 '.field--name-field-accommodation-rental-type, ' + 39 '.field--name-field-accommodation-characterist, ' + 40 '.field--name-field-wine-shop-characteristics, ' + 41 '.field--name-field-attraction-category, ' + 42 '.field--name-field-attraction-type, ' + 43 '.field--name-field-attraction-characteristics, ' + 44 '.field--name-field-nature-type, ' + 45 '.field--name-field-nature-characteristi, ' + 46 '.field--name-field-tourist-office-characteris, ' + 47 '.field--name-field-cuisine-type, ' + 48 '.field--name-field-cuisine-special-options, ' + 49 '.field--name-field-menus, ' + 50 '.field--name-field-characteristics-services, ' + 51 '.field--name-field-tourist-service-type, ' + 52 '.field--name-field-tourist-service-characteri, ' + 53 '.field--name-field-mice-proposal-goals, ' + 54 '.field--name-field-mice-experience-type, ' + 55 '.field--name-field-mice-offer-type, ' + 56 '.field--name-field-mice-space-type, ' + 57 '.field--name-field-mice-capacity, ' + 58 '.field--name-field-mice-offer-service-type, ' + 59 '.field--name-field-mice-services, ' + 60 '.field--name-field-mice-resources, ' + 61 '.field--name-field-wine-offer, ' + 62 '.field--name-field-wine-bar-meals, ' + 63 '.field--name-field-meals-offer, ' + 64 '.field--name-field-wine-bar-services, ' + 65 '.field--name-field-booking, ' + 66 '.field--name-field-open-days' 67 ); 68 69 entityReferenceFields.forEach(function(field) { 70 const items = field.querySelectorAll('.field__item'); 71 // El contenidor pot ser el mateix field o un fill amb classe .field__items 72 const itemsContainer = field.classList.contains('field__items') ? field : field.querySelector('.field__items'); 73 74 if (items.length > 3 && itemsContainer) { 75 itemsContainer.classList.add('has-multiple-items'); 76 } 77 }); 78 79 // Netejar adreça: eliminar codi postal i paÃs 80 const addressFields = context.querySelectorAll('.field--name-field-address p.address'); 81 addressFields.forEach(function(addressP) { 82 const html = addressP.innerHTML; 83 // Agafa només el que hi ha abans del primer <br> 84 const firstPart = html.split('<br>')[0].trim(); 85 addressP.innerHTML = firstPart; 86 }); 87 } 88 }; 89})(Drupal);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.