1(function () { 2 const toast = document.getElementById('rame-plan-toast'); 3 let openModal = null; 4 5 function closeModal() { 6 if (openModal) { 7 openModal.setAttribute('hidden', ''); 8 openModal = null; 9 document.body.classList.remove('rame-modal-open'); 10 } 11 } 12 13 function openModalById(modalId) { 14 closeModal(); 15 const targetModal = document.getElementById(modalId); 16 if (targetModal) { 17 targetModal.removeAttribute('hidden'); 18 openModal = targetModal; 19 document.body.classList.add('rame-modal-open'); 20 targetModal.focus(); 21 } 22 return targetModal; 23 } 24 25 function showToast(message) { 26 if (!toast) { 27 return; 28 } 29 toast.textContent = message; 30 toast.removeAttribute('hidden'); 31 setTimeout(() => { 32 toast.setAttribute('hidden', ''); 33 }, 3600); 34 } 35 36 document.addEventListener('click', function (event) { 37 const opener = event.target.closest('[data-rame-open-modal]'); 38 if (opener) { 39 event.preventDefault(); 40 const modalId = opener.getAttribute('data-rame-open-modal'); 41 openModalById(modalId); 42 return; 43 } 44 45 const closer = event.target.closest('[data-rame-modal-close]'); 46 if (closer) { 47 event.preventDefault(); 48 const toastMsg = closer.getAttribute('data-rame-toast'); 49 if (toastMsg) { 50 showToast(toastMsg); 51 } 52 closeModal(); 53 return; 54 } 55 56 const overlay = event.target.closest('.rame-modal__overlay'); 57 if (overlay && openModal && overlay.closest('.rame-modal') === openModal) { 58 event.preventDefault(); 59 closeModal(); 60 return; 61 } 62 }); 63 64 document.addEventListener('keydown', function (event) { 65 if (event.key === 'Escape' && openModal) { 66 event.preventDefault(); 67 closeModal(); 68 } 69 }); 70 71 window.rameAccount = window.rameAccount || {}; 72 window.rameAccount.openModalById = openModalById; 73 window.rameAccount.closeModal = closeModal; 74})(); 75 76(function () { 77 const defaultModal = document.getElementById('rame-pm-confirm-default'); 78 const deleteModal = document.getElementById('rame-pm-confirm-delete'); 79 80 if (!defaultModal && !deleteModal) { 81 return; 82 } 83 84 function fillModal(modal, href, title) { 85 if (!modal || !window.rameAccount) { 86 return; 87 } 88 89 const confirmLink = modal.querySelector('[data-rame-pm-confirm-action]'); 90 if (confirmLink) { 91 confirmLink.setAttribute('href', href); 92 } 93 94 const titleSlot = modal.querySelector('[data-rame-pm-title-slot]'); 95 if (titleSlot) { 96 titleSlot.textContent = title; 97 } 98 99 window.rameAccount.openModalById(modal.id); 100 } 101 102 document.addEventListener('click', function (event) { 103 const defaultTrigger = event.target.closest('[data-rame-pm-default]'); 104 if (defaultTrigger) { 105 event.preventDefault(); 106 fillModal(defaultModal, defaultTrigger.getAttribute('href'), defaultTrigger.getAttribute('data-rame-pm-title') || ''); 107 return; 108 } 109 110 const deleteTrigger = event.target.closest('[data-rame-pm-delete]'); 111 if (deleteTrigger) { 112 event.preventDefault(); 113 fillModal(deleteModal, deleteTrigger.getAttribute('href'), deleteTrigger.getAttribute('data-rame-pm-title') || ''); 114 } 115 }); 116})(); 117 118document.addEventListener('click', function (event) { 119 const navToggle = event.target.closest('.rame-account-nav__toggle'); 120 if (navToggle) { 121 const nav = navToggle.closest('.rame-account-nav'); 122 const isOpen = nav.classList.toggle('is-open'); 123 navToggle.setAttribute('aria-expanded', String(isOpen)); 124 } 125}); 126 127document.addEventListener('click', function (event) { 128 const toggle = event.target.closest('[data-rame-password-toggle]'); 129 if (!toggle) { 130 return; 131 } 132 133 event.preventDefault(); 134 const inputId = toggle.getAttribute('aria-controls'); 135 const input = document.getElementById(inputId); 136 137 if (!input) { 138 return; 139 } 140 141 const isPassword = input.type === 'password'; 142 input.type = isPassword ? 'text' : 'password'; 143 toggle.textContent = isPassword ? 'Nascondi' : 'Mostra'; 144 toggle.setAttribute('aria-pressed', isPassword ? 'true' : 'false'); 145}); 146 147document.addEventListener('click', function (event) { 148 const shareButton = event.target.closest('.rame-gc-share'); 149 if (!shareButton) { 150 return; 151 } 152 153 if (!navigator.clipboard || !navigator.clipboard.writeText) { 154 return; 155 } 156 157 const code = shareButton.dataset.gcCode; 158 159 navigator.clipboard.writeText(code).then(function () {
160 const row = shareButton.closest('.rame-row--giftcard'); 161 if (!row) { 162 return; 163 } 164 165 const note = row.querySelector('.rame-row__note'); 166 if (!note) { 167 return; 168 } 169 170 note.textContent = `Link regalo copiato. Condividilo su WhatsApp, email o messaggi: chi lo apre trova la card con il codice ${code}.`; 171 note.removeAttribute('hidden'); 172 }).catch(function () {}); 173});
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.