mypgs 1.3.4 → 1.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{AI_GUIDELINES.md → AGENTS.md} +18 -16
- package/README.md +8 -172
- package/assets/javascript/patterns/_header.js +77 -79
- package/assets/scss/base/_body.scss +2 -0
- package/assets/scss/base/_color.scss +2 -0
- package/assets/scss/base/_general.scss +2 -0
- package/assets/scss/base/_heading.scss +2 -0
- package/assets/scss/base/_variables.scss +2 -0
- package/assets/scss/components/_accordion.scss +2 -0
- package/assets/scss/components/_button.scss +2 -0
- package/assets/scss/components/_form.scss +2 -0
- package/assets/scss/components/_logo.scss +2 -0
- package/assets/scss/components/_menu.scss +2 -0
- package/assets/scss/components/_modals.scss +2 -0
- package/assets/scss/components/_notification.scss +2 -0
- package/assets/scss/components/_searchbar.scss +2 -0
- package/assets/scss/components/_slides.scss +2 -0
- package/assets/scss/components/_stepTabs.scss +2 -0
- package/assets/scss/components/_steps.scss +2 -0
- package/assets/scss/index.scss +32 -32
- package/assets/scss/layout/_flex.scss +2 -0
- package/assets/scss/layout/_grid.scss +2 -0
- package/assets/scss/layout/_layout.scss +2 -0
- package/assets/scss/layout/_pageShell.scss +2 -0
- package/assets/scss/mixin/_mx-base.scss +5 -2
- package/assets/scss/mixin/_mx-card.scss +5 -1
- package/assets/scss/mixin/_mx-form-addon.scss +4 -1
- package/assets/scss/mixin/_mx-form.scss +6 -3
- package/assets/scss/mixin/_mx-responsive.scss +14 -11
- package/assets/scss/mixin/_settings.scss +31 -0
- package/assets/scss/mixin/mixin.scss +11 -35
- package/assets/scss/patterns/_cookieConsent.scss +3 -1
- package/assets/scss/patterns/_footer.scss +2 -0
- package/assets/scss/patterns/_header.scss +12 -4
- package/dist/css/index.css +75 -25
- package/dist/css/index.css.map +1 -1
- package/dist/css/index.min.css +1 -1
- package/dist/javascript/index.js +77 -78
- package/dist/javascript/index.js.map +1 -1
- package/dist/javascript/index.min.js +1 -1
- package/package.json +1 -1
- package/templates/{components → html/components}/searchbar.html +1 -1
- package/templates/{patterns → html/patterns}/header.html +2 -2
- package/templates/react/components/accordion.jsx +27 -0
- package/templates/react/components/breadcumbs.jsx +27 -0
- package/templates/react/components/button.jsx +33 -0
- package/templates/react/components/card.jsx +27 -0
- package/templates/react/components/dropdown.jsx +29 -0
- package/templates/react/components/form.jsx +30 -0
- package/templates/react/components/logo.jsx +14 -0
- package/templates/react/components/menu.jsx +37 -0
- package/templates/react/components/modal.jsx +84 -0
- package/templates/react/components/notification.jsx +31 -0
- package/templates/react/components/searchbar.jsx +34 -0
- package/templates/react/components/slides.jsx +25 -0
- package/templates/react/components/stepTabs.jsx +40 -0
- package/templates/react/components/steps.jsx +21 -0
- package/templates/react/components/table.jsx +28 -0
- package/templates/react/components/tooltip.jsx +12 -0
- package/templates/react/layout/body.jsx +7 -0
- package/templates/react/layout/flex.jsx +36 -0
- package/templates/react/layout/grid.jsx +36 -0
- package/templates/react/layout/pageShell.jsx +48 -0
- package/templates/react/layout/section.jsx +44 -0
- package/templates/react/patterns/cookieConsent.jsx +62 -0
- package/templates/react/patterns/footer.jsx +40 -0
- package/templates/react/patterns/header.jsx +62 -0
- /package/templates/{components → html/components}/accordion.html +0 -0
- /package/templates/{components → html/components}/breadcumbs.html +0 -0
- /package/templates/{components → html/components}/button.html +0 -0
- /package/templates/{components → html/components}/card.html +0 -0
- /package/templates/{components → html/components}/dropdown.html +0 -0
- /package/templates/{components → html/components}/form.html +0 -0
- /package/templates/{components → html/components}/logo.html +0 -0
- /package/templates/{components → html/components}/menu.html +0 -0
- /package/templates/{components → html/components}/modal.html +0 -0
- /package/templates/{components → html/components}/notification.html +0 -0
- /package/templates/{components → html/components}/slides.html +0 -0
- /package/templates/{components → html/components}/stepTabs.html +0 -0
- /package/templates/{components → html/components}/steps.html +0 -0
- /package/templates/{components → html/components}/table.html +0 -0
- /package/templates/{components → html/components}/tooltip.html +0 -0
- /package/templates/{demo.css → html/demo.css} +0 -0
- /package/templates/{demo.html → html/demo.html} +0 -0
- /package/templates/{demo.js → html/demo.js} +0 -0
- /package/templates/{layout → html/layout}/body.html +0 -0
- /package/templates/{layout → html/layout}/flex.html +0 -0
- /package/templates/{layout → html/layout}/grid.html +0 -0
- /package/templates/{layout → html/layout}/pageShell.html +0 -0
- /package/templates/{layout → html/layout}/section.html +0 -0
- /package/templates/{patterns → html/patterns}/cookieConsent.html +0 -0
- /package/templates/{patterns → html/patterns}/footer.html +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{var e={795(){function e(e="svg"){const t=getComputedStyle(document.documentElement),n=[];for(let o=0;o<20;o++){const r=t.getPropertyValue("--"+e+"-color-"+o).toLocaleLowerCase().split("&");if(""==!r[0]&&""==!r[1]){let e=[r[0],r[1]];n.push(e)}}return n}const t=[e("svg"),e("lottie")];let n=pgs(document).querySelectorAll("toggleDarkmode");function o(e,n){e.forEach(e=>{const t=e.querySelector("i");t&&(t.classList.toggle("fa-moon",!n),t.classList.toggle("fa-sun",n))}),function(){function e(e,n="svg"){let o="true"!==document.documentElement.getAttribute("data-darkmode");e.querySelectorAll("[fill], [stroke]").forEach(e=>{for(const n of t)for(const t of n){let n=(t[0]||"").replace(/\s/g,""),r=(t[1]||"").replace(/\s/g,"");["fill","stroke"].forEach(t=>{const i=e.getAttribute(t);e.style.transition="fill 0.5s ease, stroke 0.5s ease",o?i==r&&e.setAttribute(t,n):i==n&&e.setAttribute(t,r)})}})}document.querySelectorAll('object[type="image/svg+xml"]').forEach(t=>{if(t.addEventListener("load",()=>{const n=t.contentDocument;n&&e(n,"svg")}),t.contentDocument){const e=new Event("load");t.dispatchEvent(e)}}),document.querySelectorAll("lottie-player").forEach(t=>{if(t.addEventListener("load",()=>{const n=t.shadowRoot.querySelector("svg");n&&e(n,"lottie")}),t.shadowRoot){const e=new Event("load");t.dispatchEvent(e)}})}()}"true"===localStorage.getItem("screenIsDarkMode")&&(document.body.classList.add("darkmode"),document.querySelector(":root").setAttribute("data-darkmode","true"),document.body.setAttribute("data-darkmode","true")),n.forEach(e=>{let t="true"===document.documentElement.getAttribute("data-darkmode");o(n,t),e.addEventListener("click",()=>{let e="true"!==document.documentElement.getAttribute("data-darkmode");localStorage.setItem("screenIsDarkMode",e),document.body.classList.toggle("darkmode",e),document.body.setAttribute("data-darkmode",e),document.querySelector(":root").setAttribute("data-darkmode",e),o(n,e)})})},359(){document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll('object[type="image/svg+xml"]').forEach(e=>{function t(t){if(!t)return;const n=t.querySelector("svg");if(!n)return;const o=window.getComputedStyle(e);n.setAttribute("preserveAspectRatio","cover"===o.objectFit?"xMidYMid slice":"xMidYMid meet")}function n(){const n=e.contentDocument;if(!n)return;if(!n.querySelector("svg"))return;if(t(n),e.__objectResizeObserver)return;let o=0;const r=new ResizeObserver(()=>{o||(o=requestAnimationFrame(()=>{o=0,t(n)}))});r.observe(e),e.__objectResizeObserver=r}e.contentDocument&&e.contentDocument.querySelector("svg")?n():e.addEventListener("load",n,{once:!0})}),document.body.classList.add("object-loaded")})},48(){const e="pgs_cookie_preferences_v1";function t(){window.dataLayer=window.dataLayer||[],window.gtag=window.gtag||function(){window.dataLayer.push(arguments)}}function n(e,t,n){if(!(e instanceof HTMLElement&&t))return;const o=(e.getAttribute("pgs")||"").split(/\s+/).filter(Boolean),r=n?[...new Set([...o,t])]:o.filter(e=>e!==t);r.length>0?e.setAttribute("pgs",r.join(" ")):e.removeAttribute("pgs")}function o(){const o=pgs(document).querySelector("cookieConsent");if(!o)return;const r=o.querySelector('[pgs~="cookieConsent-toggleAnalytics"]'),i=o.querySelector('[pgs~="cookieConsent-actionAccept"]'),s=o.querySelector('[pgs~="cookieConsent-actionReject"]'),a=document.querySelectorAll('[pgs~="cookieConsent-actionOpen"]'),c=(o.dataset.gaId||"").trim(),l=c.length>0;let d=null;function u(e){o.hidden=!e,o.setAttribute("aria-hidden",String(!e)),document.body.classList.toggle("cookieConsent-open",e),e?(d=document.activeElement,setTimeout(()=>{o.focus()},0)):d instanceof HTMLElement&&d.focus({preventScroll:!0})}function p(){u(!1)}function g(r){!function(t){try{localStorage.setItem(e,JSON.stringify({...t,updatedAt:(new Date).toISOString()}))}catch(e){console.warn("PGS cookie consent: impossibile salvare le preferenze",e)}}({analytics:r}),n(o,"cookieConsent-accepted",!!r),n(o,"cookieConsent-declined",!r),function({allowAnalytics:e,measurementId:n}){t(),e?(window.gtag("consent","update",{analytics_storage:"granted"}),function(e){if(!e||window.__PGS_gaLoaded)return;window.__PGS_gaLoaded=!0;const t=document.createElement("script");t.async=!0,t.src=`https://www.googletagmanager.com/gtag/js?id=${e}`,document.head.appendChild(t),window.gtag("js",new Date),window.gtag("config",e,{anonymize_ip:!0,allow_google_signals:!1})}(n)):window.gtag("consent","update",{analytics_storage:"denied"})}({allowAnalytics:!!r,measurementId:c})}!function({root:e,analyticsToggle:t,acceptAllButton:n,rejectButton:o,openButtons:r}){e.dataset.cookieComponent="consent",t?.setAttribute("data-cookie-toggle","analytics"),n?.setAttribute("data-cookie-action","accept"),o?.setAttribute("data-cookie-action","reject"),e.querySelector('[pgs~="cookieConsent-featureEssential"]')?.setAttribute("data-cookie-feature","essential"),e.querySelector('[pgs~="cookieConsent-featureAnalytics"]')?.setAttribute("data-cookie-feature","analytics"),r.forEach(e=>{e.setAttribute("data-cookie-action","open")})}({root:o,analyticsToggle:r,acceptAllButton:i,rejectButton:s,openButtons:a}),r&&(r.disabled=!l,l?n(o,"cookieConsent-gaUnavailable",!1):(r.checked=!1,n(o,"cookieConsent-gaUnavailable",!0))),t(),window.gtag("consent","default",{analytics_storage:"denied"}),i?.addEventListener("click",()=>{r&&l&&(r.checked=!0),g(!!l),p()}),s?.addEventListener("click",()=>{const e=!!r&&r.checked&&l;!e&&r&&(r.checked=!1),g(e),p()}),r?.addEventListener("change",e=>{!l&&e.target instanceof HTMLInputElement&&(e.target.checked=!1)}),o.addEventListener("keydown",e=>{if("Escape"===e.key)e.preventDefault(),p();else if("Tab"===e.key){const t=o.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])');if(0===t.length)return;const n=t[0],r=t[t.length-1];e.shiftKey||document.activeElement!==r||(e.preventDefault(),n.focus()),e.shiftKey&&document.activeElement===n&&(e.preventDefault(),r.focus())}}),a.forEach(e=>{e.addEventListener("click",e=>{e.preventDefault(),u(!0)})});const f=function(){try{return function(e){try{return e?JSON.parse(e):null}catch(e){return console.warn("PGS cookie consent: impossibile leggere le preferenze",e),null}}(localStorage.getItem(e))}catch(e){return null}}();f&&"boolean"==typeof f.analytics?(r&&(r.checked=!!f.analytics&&l),g(f.analytics&&l),p()):u(!0)}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",o):o()},107(){const e=pgs(document).querySelector("header");pgs(e).querySelectorAll("header-element").forEach(t=>function(t){if("true"==t.getAttribute("data-initialize"))return;t.setAttribute("data-initialize","true");let n,o=!1;let r=0;const i=()=>{r||(r=requestAnimationFrame(()=>{r=0,function(r){let i,s=window.getComputedStyle(r),a=parseFloat(s.paddingLeft)+parseFloat(s.paddingRight),c=parseFloat(s.gap),l=parseInt(r.offsetWidth-a);if(o)i=n;else{let e=[];Array.from(r.children).filter(e=>!pgs(e).contains("header-element-onlyMobile")).forEach(t=>{pgs(t).contains("header-element-hamburger")||e.push(...t.children)}),c=Math.round(c*(e.length-1)),i=e.reduce((e,t)=>e+t.offsetWidth,0)-2+c}window.innerWidth<600?(e.setAttribute("data-header-mobileActive","true"),t.setAttribute("data-header-mobileActive","true")):l<i?(e.setAttribute("data-header-mobileActive","true"),r.setAttribute("data-header-mobileActive","true"),o=!0,n=i):(e.setAttribute("data-header-mobileActive","false"),r.setAttribute("data-header-mobileActive","false"))}(t)}))};new ResizeObserver(i).observe(t),i()}(t));const t=document.querySelector("body");function n(){const e=document.querySelectorAll("header > [data-initialize=true]"),n=window.getComputedStyle(document.documentElement).marginTop??0,o=Array.from(e).map(e=>e.offsetHeight).reduce((e,t)=>e+t)+parseInt(n);t.style.setProperty("--heightOfHeader",`${o}px`);const r="true"===document.querySelector("header").getAttribute("data-header-scroll")?0:o;t.style.setProperty("--heightOfHeaderScroll",`${r}px`)}n(),window.addEventListener("resize",n),window.addEventListener("scroll",n);let o=window.scrollY;window.addEventListener("scroll",()=>{let t=window.scrollY;window.innerHeight<=900&&(t>=80?t>o?(e.style.transform="translateY(-100%)",e.setAttribute("data-header-scroll",!0)):(e.style.transform="translateY(0px)",e.setAttribute("data-header-scroll",!1)):(e.style.transform="translateY(0)",e.setAttribute("data-header-scroll",!1))),o=t}),window.addEventListener("resize",()=>{window.innerWidth>768&&(e.style.transform="translateY(0)")}),window.innerWidth<600&&(document.querySelector("header").setAttribute("data-header-mobileActive","true"),document.querySelector("[pgs~=header-element]").setAttribute("data-header-mobileActive","true"))}};const t={};function n(o){const r=t[o];if(void 0!==r)return r.exports;const i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}(()=>{"use strict";function e(e){const t="pgs";if(!e)throw new TypeError("pgs(root): root richiesto");const n="function"==typeof e.getAttribute&&"function"==typeof e.setAttribute;if("function"!=typeof e.querySelector||"function"!=typeof e.querySelectorAll)throw new TypeError("pgs(root): root deve supportare querySelector/querySelectorAll");function o(t){throw new TypeError(`pgs(${e.nodeName||"root"}).${t}(): disponibile solo su Element (non su Document)`)}function r(e){return Array.isArray(e)&&(e=e.join(",")),String(e).split(",").map(e=>e.trim()).filter(Boolean).map(e=>`[${t}~="${e}"]`).join(",")}function i(e,n=" "){return(e.getAttribute(t)||"").split(n).filter(Boolean)}function s(e,n,o=" "){e.setAttribute(t,n.join(o))}const a=function(){function a(){return a}return a.querySelector=function(t){return e.querySelector(r(t))},a.querySelectorAll=function(t){return e.querySelectorAll(r(t))},a.add=function(...t){if(!n)return o("add");const r=i(e);for(const e of t)r.includes(e)||r.push(e);return s(e,r),a},a.remove=function(...t){return n?(s(e,i(e).filter(e=>!t.includes(e))),a):o("remove")},a.toggle=function(t,r){if(!n)return o("toggle");const s=i(e).includes(t);return void 0!==r?(r&&!s&&a.add(t),!r&&s&&a.remove(t),!!r):s?(a.remove(t),!1):(a.add(t),!0)},a.contains=function(t){return n?i(e).includes(t):o("contains")},Object.defineProperty(a,"value",{get(){if(n)return e.getAttribute(t)},set(r){if(!n)return o("value");e.setAttribute(t,r)}}),a}();return a.state=function(t){if(!n)return;const o=(n=" ")=>(e.getAttribute(t)||"").split(n).filter(Boolean),r=(n,o=" ")=>e.setAttribute(t,n.join(o));function i(...e){return i.add(...e),i}return i.add=function(...e){const t=e.flat().map(e=>String(e).trim()).filter(Boolean),n=o();for(const e of t)n.includes(e)||n.push(e);return r(n),i},i.remove=function(...e){const t=e.flat().map(e=>String(e).trim()).filter(Boolean),n=o().filter(e=>!t.includes(e));return r(n),i},i.toggle=function(e,t){const n=String(e).trim();if(!n)return!1;const i=o(),s=i.includes(n);return void 0!==t?(t&&!s&&(i.push(n),r(i)),!t&&s&&r(i.filter(e=>e!==n)),!!t):s?(r(i.filter(e=>e!==n)),!1):(i.push(n),r(i),!0)},i.contains=function(e){const t=String(e).trim();return!!t&&o().includes(t)},Object.defineProperty(i,"value",{get:()=>e.getAttribute(t),set(n){e.setAttribute(t,n)}}),i}("pgs-state"),a.option=function(t){if(n)return o.contains=function(n){const o=e.getAttribute(t)||"",r=String(n).replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`(?:^|\\s)${r}(?:\\[[^\\]]*\\])?(?=\\s|$)`).test(o)},o.getValueBrackets=function(n){const o=e.getAttribute(t)||"",r=String(n).replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=o.match(new RegExp(`(?:^|\\s)${r}\\[([^\\]]*)\\]`));return i?i[1]:void 0},Object.defineProperty(o,"value",{get:()=>e.getAttribute(t),set(n){e.setAttribute(t,n)}}),o;function o(){return o}}("pgs-option"),a}const t={};function o(e,n){const o=String(e||"").trim().replace(/^pgs[_-\s]*/i,"").toLowerCase();if(!o)throw new TypeError("pgs.registerImport(...modules): ogni modulo deve avere name o PGS_name");t[o]={name:e,module:n}}e.registerImport=function(...t){return t.flat().forEach(e=>{!e||"object"!=typeof e||e.PGS_name||e.name?o(e?.PGS_name||e?.name,e):Object.entries(e).forEach(([e,t])=>o(e,t))}),e},e.registerModules=function(t={}){return Object.entries(t).forEach(([t,n])=>{const o=String(t||"").trim();if(o){if(Object.prototype.hasOwnProperty.call(e,o)&&e[o]!==n)throw new Error(`pgs.registerModules(): "${o}" e' gia' definito su pgs`);e[o]=n}}),e},e.import=function(...e){return e.flat().reduce((e,n)=>{const o=String(n||"").trim().replace(/^pgs[_-\s]*/i,"").toLowerCase(),r=t[o];if(!r)throw new Error(`pgs.import(): modulo "${n}" non registrato`);return e[r.name]=r.module,e},{})},globalThis.pgs??=e,n(795),n(359);const r=new WeakMap;let i=0;function s(e,t){return Array.from(e.children).find(e=>pgs(e).contains(t))}function a(e=document){pgs(e).querySelectorAll("accordion").forEach(e=>{if(r.has(e))return;const t=s(e,"accordion-button"),n=s(e,"accordion-content");if(!t||!n)return;const o=(i+=1,i),c=`acc-btn-${o}`,l=`acc-panel-${o}`,d=pgs(e).state.contains("open");function u(e,t,n){const o=(t?.textContent||"").trim().replace(/\s+/g," ");t.setAttribute("aria-label",`${e?"Chiudi":"Apri"} ${o||"sezione"}`),t.setAttribute("aria-expanded",String(e)),n.hidden=!e}function p(){const o=!pgs(e).state.contains("open");pgs(e).state.toggle("open",o),u(o,t,n),function(){for(const t of pgs(document).querySelectorAll("accordion")){if(t===e)continue;const n=pgs(t).querySelector("accordion-button"),o=pgs(t).querySelector("accordion-content");n&&o&&(pgs(t).state().remove("open"),u(!1,n,o))}}(),o&&setTimeout(()=>e.scrollIntoView({block:"nearest",inline:"nearest"}),100)}t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.id||t.setAttribute("id",c),n.id||n.setAttribute("id",l),t.setAttribute("aria-controls",n.id),n.setAttribute("role","region"),n.setAttribute("aria-labelledby",t.id),u(d,t,n),t.addEventListener("click",p),t.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),p())}),r.set(e,{element:e,button:t,content:n,open:function(){pgs(e).state.contains("open")||p()},close:function(){pgs(e).state.contains("open")&&p()},toggle:p,refresh:()=>(a(e.parentNode||document),r.get(e)),isOpen:()=>pgs(e).state.contains("open")})})}a();const c={init:a,api:function(e){return r.get(e)}},l=new WeakMap,d=new Set;let u=0;function p(e){return e instanceof Element&&pgs(e).contains("dropdown-content")}function g(e){const t=l.get(e);if(!t||!t.isOpen())return;const{trigger:n,content:o}=t,{side:r,align:i}=function(e){const t=(pgs(e).option.getValueBrackets("position")||"bottom center").trim().toLowerCase().split(/\s+/).filter(Boolean),n=t.find(e=>["top","right","bottom","left"].includes(e))||"bottom",o=t.find(e=>["top","right","bottom","left","center"].includes(e)&&e!==n)||"center";return{side:n,align:o}}(e),s=n.getBoundingClientRect(),a=o.getBoundingClientRect(),c=document.documentElement.clientWidth,d=Math.max(8,c-a.width-8);let u=s.left+(s.width-a.width)/2,p=s.bottom+8;var g,f;"top"!==r&&"bottom"!==r||(p="top"===r?s.top-a.height-8:s.bottom+8,"left"===i&&(u=s.left),"right"===i&&(u=s.right-a.width)),"left"!==r&&"right"!==r||(u="left"===r?s.left-a.width-8:s.right+8,p=s.top+(s.height-a.height)/2,"top"===i&&(p=s.top),"bottom"===i&&(p=s.bottom-a.height)),"left"===r&&u<8&&(u=s.right+8),"right"===r&&u+a.width>c-8&&(u=s.left-a.width-8),g=u,f=d,u=Math.min(Math.max(g,8),f),o.style.setProperty("--dropdown-left",`${Math.round(u)}px`),o.style.setProperty("--dropdown-top",`${Math.round(p)}px`)}function f(){d.forEach(g)}function m(e){const t=l.get(e);t&&t.isOpen()&&(pgs(e).state.remove("open"),t.trigger.setAttribute("aria-expanded","false"),d.delete(e))}function h(e){const t=l.get(e);t&&!t.isOpen()&&(d.forEach(t=>{t!==e&&m(t)}),pgs(e).state.add("open"),t.trigger.setAttribute("aria-expanded","true"),d.add(e),g(e))}function b(e){const t=l.get(e);t&&(t.isOpen()?m(e):h(e))}function y(e=document){(function(e){const t=e instanceof Element&&pgs(e).contains("dropdown")?[e]:[];return t.push(...pgs(e).querySelectorAll("dropdown")),t})(e).forEach(e=>{if(l.has(e))return;const t=(n=e,Array.from(n.children).find(p)||pgs(n).querySelector("dropdown-content"));var n;if(!t)return;const o=function(e,t){const n=Array.from(e.children).filter(e=>e!==t);return n.find(e=>pgs(e).contains("dropdown-button"))||n.find(e=>!p(e))||e}(e,t),r=(u+=1,u);o.id||(o.id=`dropdown-btn-${r}`),t.id||(t.id=`dropdown-panel-${r}`),o.matches("button")&&!o.hasAttribute("type")&&o.setAttribute("type","button"),o.setAttribute("aria-haspopup","true"),o.setAttribute("aria-controls",t.id),o.setAttribute("aria-expanded",String(pgs(e).state.contains("open"))),t.setAttribute("aria-labelledby",o.id);const i={element:e,trigger:o,content:t,open:()=>h(e),close:()=>m(e),toggle:()=>b(e),refresh:()=>(y(e.parentNode||document),g(e),l.get(e)),isOpen:()=>pgs(e).state.contains("open")};o.addEventListener("click",t=>{p(t.target)||(t.preventDefault(),t.stopPropagation(),b(e))}),t.addEventListener("click",e=>e.stopPropagation()),l.set(e,i),i.isOpen()&&d.add(e),g(e)})}document.addEventListener("click",e=>{var t;t=e.target,Array.from(d).some(e=>e.contains(t))||d.forEach(m)}),document.addEventListener("keydown",e=>{"Escape"===e.key&&d.forEach(m)}),window.addEventListener("resize",f),window.addEventListener("scroll",f,!0),y();const A={init:y,api:function(e){return l.get(e)}},v=new WeakMap;function w(e=document){pgs(e).querySelectorAll("menu").forEach(e=>{v.has(e)||(e.querySelectorAll("li").forEach(e=>{const t=e.querySelector("ul");if(t){const n=document.createElement("button");n.type="button",n.innerHTML="<span>⏷</span>",pgs(n).add("menu-buttonIcon"),e.querySelector("a").insertAdjacentElement("afterend",n),pgs(e).add("dropdown"),pgs(n).add("dropdown-button"),pgs(n).add("buttonNohover"),pgs(t).add("dropdown-content")}}),v.set(e,{element:e,type:"horizontal",refresh:()=>(w(e.parentNode||document),v.get(e))}),A.init(e))})}w();const S={init:w,api:function(e){return v.get(e)}},E=new WeakMap;function k(e="modal"){pgs(document).querySelectorAll(e).forEach(t=>{if(E.has(t))return;const n=pgs(t).querySelector("modal-button"),o=t.querySelector("dialog");if(!n||!o)return;const r='<button pgs="buttonClose modal-close" type="button" tabindex="0" aria-label="Chiudi"><i class="fa-solid fa-close"></i></button>',i=pgs(t)?.querySelector("modal-dialog-content-header"),s=pgs(t).option.contains("disableBackdropClose"),a=pgs(t).option.contains("history"),c=pgs(t).option.getValueBrackets("containerID"),l=pgs(t).option.getValueBrackets("containerPGS"),d=pgs(o).option.contains("topLevel");pgs(t).querySelector("modal-close")||(i?i.insertAdjacentHTML("beforeend",r):o.insertAdjacentHTML("beforeend",r));const u=pgs(t).querySelector("modal-close");function p(e=!0){n?.setAttribute("aria-expanded",e),o?.setAttribute("aria-expanded",e)}function g(e){e?.stopImmediatePropagation(),o.open?f(e):(o.open||document.querySelectorAll("dialog[open]").forEach(e=>e.close()),p(!0),d?o.showModal():o.show(),t.dispatchEvent(new CustomEvent("modal:open")),o.dispatchEvent(new CustomEvent("modal:open")))}function f(e){e?.stopImmediatePropagation(),p(!1),o.close(),t.dispatchEvent(new CustomEvent("modal:close")),o.dispatchEvent(new CustomEvent("modal:close"))}pgs(o).add("dialog modal-dialog"),n.setAttribute("role","button"),n.setAttribute("aria-label","apri modale"),d||(c?document.querySelector("#"+c)?.append(o):l?pgs(document).querySelector(l)?.append(o):document.body.append(o)),n.addEventListener("click",e=>g(e)),n.addEventListener("keypress",e=>!o.open&&("Enter"===e.key||" "===e.key)&&g(e)),o.addEventListener("close",()=>p(!1)),o.addEventListener("click",e=>{e.target!=o||s||f(e)}),u?.addEventListener("click",e=>f(e)),a&&n.id&&(setTimeout(function(){new URLSearchParams(window.location.search).get("modal")===n.id&&(document.getElementById(n.id)?.scrollIntoView({behavior:"smooth"}),g())},1),new MutationObserver(()=>{let e=o.hasAttribute("open");try{const t=new URL(window.location.href),o=new URLSearchParams(t.search);e?o.set("modal",n.id):o.delete("modal"),t.search=o.toString()?`?${o.toString()}`:"",window.history.pushState({modal:n.id,open:e},"",t)}catch(e){}}).observe(o,{attributes:!0,attributeFilter:["open"]}),window.addEventListener("popstate",()=>{try{const e=new URLSearchParams(window.location.search).get("modal")===n.id;e&&!o.open&&o.showModal(),!e&&o.open&&f()}catch(e){}})),E.set(t,{element:t,button:n,dialog:o,closeButton:u,open:function(e){o.open||g(e)},close:function(e){o.open&&f(e)},toggle:g,refresh:()=>(k(e),E.get(t)),isOpen:()=>o.open})})}k();const q={init:k,api:function(e){return E.get(e)}};function L(e,t){const n=(()=>{let e=0,t=0,n=0,o=!1;return{update:function(r){const i=performance.now(),s=i-e;let a=Math.abs(r.deltaY);return 1===r.deltaMode?a*=16:2===r.deltaMode&&(a*=r.currentTarget?.clientHeight||800),a<30&&s<35&&t++,n++,n>=6&&(o=t>=3,t=0,n=0),e=i,o},get value(){return o}}})();let o=e;o.addEventListener("wheel",e=>{const r=t;if(n.update(e))return;if(e.ctrlKey)return;if(Math.abs(e.deltaX)>Math.abs(e.deltaY))return;let i=e.deltaY;1===e.deltaMode?i*=16:2===e.deltaMode&&(i*=o.clientHeight);const s=o.scrollLeft<=0,a=o.scrollLeft+o.clientWidth>=o.scrollWidth-1;(i>0&&!a||i<0&&!s)&&(e.preventDefault(),o.scrollLeft+=i*r)},{passive:!1})}const M=new WeakMap;class x{constructor({selector:e,viewRatio:t=.97,optionIntersectionObserver:n={},scrollOptions:o={}}={}){this.selector=e,this.viewRatio=t,this.optionIntersectionObserver={threshold:Array.from({length:101},(e,t)=>t/100),rootMargin:"0px",...n},this.scrollOptions={behavior:"smooth",inline:"center",block:"nearest",container:"nearest",...o},this.container=this.selector?pgs(this.selector).querySelector("slides-container"):null}#e(){const e=this.selector;pgs(e).querySelector("slides-prec")||pgs(e).querySelector("slides-next")||(e.insertAdjacentHTML("afterbegin",'<button pgs="slides-prec buttonIcon" type="button" class="precButton" aria-label="slide precedente"> <span> <i class="fa-solid fa-arrow-left"></i></span></button>'),e.insertAdjacentHTML("beforeend",'<button pgs="slides-next buttonIcon" type="button" class="nextButton" aria-label="prossima slide"> <span> <i class="fa-solid fa-arrow-right"></i></span></button>')),pgs(e).querySelector("slides-dots")||(e.insertAdjacentHTML("beforeend",'<div pgs="slides-dots" class="slides-dots"></div>'),Array.from(this.container.children).forEach(()=>{pgs(e).querySelector("slides-dots").insertAdjacentHTML("beforeend",'<button type="button" class="slide-dot" aria-label="vai alla prossima slide"></button>')}))}#t(){const e=this.container.querySelectorAll(".view");let t;t=pgs(this.selector).option.contains("singleScroll")?e[e.length-1]:e[0];const n=t?.previousElementSibling;n?.scrollIntoView(this.scrollOptions),n?.focus({preventScroll:!0})}#n(){const e=this.container.querySelectorAll(".view");let t;t=pgs(this.selector).option.contains("singleScroll")?e[0]:e[e.length-1];const n=t?.nextElementSibling;console.log(t,n),n?.scrollIntoView(this.scrollOptions),n?.focus({preventScroll:!0})}#o(e){this.container.children[e].scrollIntoView(this.scrollOptions)}#r(e,t,n,o,r){e.forEach(e=>{const i=.9+.1*e.intersectionRatio,s=i>=.98;!pgs(e.target).option.contains("notScrollAnimation")&&e.target.firstElementChild&&e.target.firstElementChild.style.setProperty("--visible-percent",`${i}`),e.target.classList.toggle("view",s),e.target.classList.toggle("notView",!s);const a=e.target.parentNode.children,c=a[0].classList.contains("view"),l=a[a.length-1].classList.contains("view");o.disabled=l,n.disabled=c,o.setAttribute("aria-disabled",String(l)),n.setAttribute("aria-disabled",String(c));const d=Array.from(t.children).filter(e=>e.classList.contains("view"));r.forEach((e,n)=>{const o=d.some(e=>Array.from(t.children).indexOf(e)===n);e.classList.toggle("active",o),e.setAttribute("aria-current",o?"true":"false")})})}execute(){const e=this.selector;if(!this.container)return;this.#e();const t=pgs(e).querySelector("slides-prec"),n=pgs(e).querySelector("slides-next"),o=Array.from(pgs(e).querySelector("slides-dots").children);pgs(e).option.contains("notScrollWithMouse")||L(this.container,5),o.forEach((e,t)=>e.addEventListener("click",e=>this.#o(t))),t.addEventListener("click",e=>this.#t(),{passive:!0}),n.addEventListener("click",e=>this.#n(),{passive:!0});const r=new IntersectionObserver(e=>this.#r(e,this.container,t,n,o),{root:this.container,...this.optionIntersectionObserver});Array.from(this.container.children).forEach(e=>r.observe(e)),M.set(this.selector,{element:this.selector,container:this.container,previous:()=>this.#t(),next:()=>this.#n(),goTo:e=>this.#o(e),getCurrentIndexes:()=>Array.from(this.container.children).map((e,t)=>e.classList.contains("view")?t:-1).filter(e=>-1!==e),getCurrentElements:()=>Array.from(this.container.children).filter(e=>e.classList.contains("view")),getTotal:()=>this.container.children.length,isAtStart:()=>this.container.children[0]?.classList.contains("view")||!1,isAtEnd:()=>{const e=this.container.children,t=e[e.length-1];return t?.classList.contains("view")||!1},refresh:()=>(T(this.selector.parentNode||document),M.get(this.selector))})}}function T(e=document){pgs(e).querySelectorAll("slides").forEach(e=>{M.has(e)||new x({selector:e}).execute()})}T();const C={init:T,api:function(e){return M.get(e)}},O=new WeakMap;function I(e=document){pgs(e).querySelectorAll("steps").forEach(e=>{O.has(e)||(pgs(e).querySelectorAll("steps-step").forEach((e,t)=>{let n;if(pgs(e).querySelector("steps-step-circle")?n=pgs(e).querySelector("steps-step-circle"):(n=document.createElement("span"),pgs(n).add("steps-step-circle"),n.textContent=t+1,e.insertAdjacentElement("afterbegin",n)),!pgs(e).querySelector("steps-step-line")){const t=document.createElement("span");pgs(t).add("steps-step-line"),e.insertAdjacentElement("afterbegin",t)}}),O.set(e,{element:e,steps:()=>Array.from(pgs(e).querySelectorAll("steps-step")),getStep:t=>pgs(e).querySelectorAll("steps-step")[t],getTotal:()=>pgs(e).querySelectorAll("steps-step").length,refresh:()=>(O.delete(e),I(e.parentNode||document),O.get(e))}))})}I();const _={init:I,api:function(e){return O.get(e)}},j=new WeakMap;function N(e=document){pgs(e).querySelectorAll("stepTabs").forEach(e=>{if("true"===e.dataset.stepTabsInitialized)return;e.dataset.stepTabsInitialized="true";const t=pgs(e).querySelector("stepTabs-prev"),n=pgs(e).querySelector("stepTabs-next"),o=pgs(e).querySelector("stepTabs-restart"),r=pgs(e).querySelector("stepTabs-dots"),i=pgs(e).querySelector("stepTabs-container"),s=pgs(i).querySelectorAll("tab"),a=s.length,c=Array.from(s).filter(e=>pgs(e).state.contains("is-locked"));let l=0;t&&(t.disabled=!0);let d=!1;if(!i||0===a)return;const u=[];function p(e,t,n){e&&n!==pgs(e).state.contains(t)&&pgs(e).state.toggle(t,n)}function g(){const e=s[l];t&&(t.disabled=0===l),n&&(n.disabled=l===a-1||pgs(e).state.contains("is-locked"))}function f(t,n=!0){l=Math.min(Math.max(t,0),a-1);const o=s[l];d=!0,s.forEach((e,t)=>p(e,"is-active",t===l)),g(),u.forEach((e,t)=>{p(e,"is-active",t===l),p(e,"is-completed",t<l)}),d=!1,n&&!e.closest("dialog")&&(o?.focus(),e?.scrollIntoView({behavior:"smooth",block:"start"})),e.dispatchEvent(new CustomEvent("stepTabs:change",{detail:{current:l,total:a}}))}function m(){f(0),c.forEach(e=>pgs(e).state.add("is-locked"))}r&&(r.innerHTML="",s.forEach((e,t)=>{const n=pgs(e).option.getValueBrackets("tabIcon")||"fa-circle",o=document.createElement("button");o.type="button",pgs(o).add("stepTabs-dots-dot"),o.setAttribute("data-step",t),o.innerHTML=`<i class="fa-solid ${n}"></i>`,o.addEventListener("click",()=>{pgs(o).state.contains("is-completed")&&f(t,!0)}),r.appendChild(o),u.push(o)})),f(0,!1);const h=new MutationObserver(()=>{d||g()});s?.forEach(e=>h.observe(e,{attributes:!0,attributeFilter:["pgs-state"]})),t?.addEventListener("click",e=>f(l-1)),n?.addEventListener("click",e=>{g(),n.disabled||f(l+1)}),o?.addEventListener("click",e=>m(),{capture:!0}),j.set(e,{element:e,container:i,restart:m,goTo:f,next:()=>f(l+1),prev:()=>f(l-1),toggleLock:(e,t=!0)=>"number"==typeof e&&s[e]&&(pgs(s[e]).state.toggle("is-locked",t),f(l)),refresh:()=>(N(e.parentNode||document),j.get(e)),getCurrent:()=>l,getState:()=>({current:l,total:a})})})}N();const $={init:N,api:function(e){return j.get(e)}},R={_escapeHtml:e=>String(e??""),_getDuration(e){const t=e.duration,n=Number.parseInt(t,10);return Number.isNaN(n)?5e3:n},_getApi:e=>"toast"===String(e.element||"notification").trim()?P.toast:P.alert,_getType(e,t){const n=String(e.type||"info").trim();return"function"==typeof t[n]?n:"info"},_getData(e){try{return JSON.parse(e.dataset.notification||"{}")}catch(e){return console.warn("PGS notification: dati non validi",e),{}}},_getContent(e,t){const n=this._escapeHtml(t),o=this._escapeHtml(e);return o?n?`\n <span pgs="notification-element-title">${o}</span>\n <br>\n <span pgs="notification-element-content">${n}</span>\n `:`<span pgs="notification-element-title">${o}</span>`:n},initNotification(e,t,n,o,r,i="replace",s=null){let a=pgs(document).querySelector(t);if(!a){const e=document.createElement("div");pgs(e).add(t),e.setAttribute("aria-live","polite"),e.setAttribute("aria-relevant","additions"),document.body.appendChild(e),a=e}const c=document.createElement(s?"a":"div");function l(){"stack"==i?c.style.translate="120%":c.style.opacity="0",setTimeout(()=>c.remove(),300)}"replace"==i&&(a.innerHTML=""),s&&(c.href=s),r>0&&c.style.setProperty("--notification-timeout",r+"ms"),pgs(c).state.add(e),pgs(c).add("notification-element"),c.setAttribute("role","error"==e?"alert":"status"),c.innerHTML=`${n} <p>${o}</p>`,a.appendChild(c),r>0&&setTimeout(()=>{l()},r);const d=document.createElement("button");d.type="button",d.ariaLabel="Rimuovi notifica",d.innerHTML='<i class="fa-solid fa-xmark"></i>',d.setAttribute("pgs","buttonClose"),c.insertAdjacentElement("afterbegin",d),d.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),l()})},deleteAll(e){let t=pgs(document).querySelector(e);t&&(t.innerHTML="")},trigger(e=document){pgs(e).querySelectorAll("notificationTrigger").forEach(e=>{if(!e||"true"===e.dataset.initialize)return;e.dataset.initialize="true";const t=this._getData(e),n=String(t.title||"").trim(),o=String(t.message||"").trim();if(!n&&!o)return void e.remove();const r=t.link||null,i=t.icon||void 0,s=this._getDuration(t),a=this._getApi(t),c=this._getType(t,a),l=this._getContent(n,o);a===P.toast?a[c](l,s,i):a[c](l,r,s,i),e.remove()})}};function D(e=document){return R.trigger(e)}const P={trigger:D,alert:{error:(e="Errore",t=null,n=0,o='<i class="fa-solid fa-circle-xmark"></i>')=>R.initNotification("error","notification",o,e,n,"stack",t),success:(e="Aggiornato",t=null,n=0,o='<i class="fa-solid fa-check"></i>')=>R.initNotification("success","notification",o,e,n,"stack",t),info:(e="Aggiornamento",t=null,n=0,o='<i class="fa-solid fa-circle-info"></i>')=>R.initNotification("info","notification",o,e,n,"stack",t),warning:(e="Attenzione",t=null,n=0,o='<i class="fa-solid fa-triangle-exclamation"></i>')=>R.initNotification("warning","notification",o,e,n,"stack",t),deleteAll:()=>R.deleteAll("notification")},toast:{error:(e="Errore",t=4e3,n='<i class="fa-solid fa-circle-xmark"></i>')=>R.initNotification("error","toast",n,e,t),success:(e="Aggiornato",t=4e3,n='<i class="fa-solid fa-check"></i>')=>R.initNotification("success","toast",n,e,t),info:(e="Aggiornamento",t=0,n='<i class="fa-solid fa-circle-info"></i>')=>R.initNotification("info","toast",n,e,t),warning:(e="Attenzione",t=4e3,n='<i class="fa-solid fa-triangle-exclamation"></i>')=>R.initNotification("warning","toast",n,e,t),deleteAll:()=>R.deleteAll("toast")}};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>D()):D(),e.registerModules({accordion:c,dropdown:A,menu:S,modal:q,notification:P,slides:C,stepTabs:$,steps:_,formValidate:class{constructor({form:e}={}){this.container=e,this._rules=[]}addError(e,t){e.setAttribute("data-form-field-status","error"),0==t&&e.scrollIntoView();let n=e.getAttribute("data-form-field-message");0==t&&n?P.toast.error(n):0==t&&P.toast.error("Compila tutti i campi!")}removeError(e){e.setAttribute("data-form-field-status","")}#i(e){e.forEach(e=>{e.addEventListener("click",t=>this.removeError(e))})}help={isRequired:e=>!!e&&((!0===e.required||"true"===e?.dataset?.required||"true"==e?.getAttribute("aria-required"))&&!e.hidden),isEmptyTextLike:e=>!String(e?.value??"").trim(),isEmptySelect:e=>!String(e?.value??"").trim(),getGroupName:e=>e?.name||e?.getAttribute?.("name")||""};#s(e){const t=[];for(const n of this._rules){const o=n(e);o&&(Array.isArray(o)?t.push(...o):t.push(o))}const n=Array.from(e.querySelectorAll("input")).filter(e=>!e.disabled&&"hidden"!==e.type&&"checkbox"!==e.type&&"radio"!==e.type&&"file"!==e.type&&!!this.help.isRequired(e)&&this.help.isEmptyTextLike(e)),o=Array.from(e.querySelectorAll("textarea")).filter(e=>!e.disabled&&!!this.help.isRequired(e)&&this.help.isEmptyTextLike(e)),r=Array.from(e.querySelectorAll("select")).filter(e=>!e.disabled&&!!this.help.isRequired(e)&&this.help.isEmptySelect(e)),i=Array.from(e.querySelectorAll('input[type="radio"]')).filter(e=>!e.disabled),s=new Map;for(const e of i){if(!this.help.isRequired(e))continue;const t=this.help.getGroupName(e);t&&(s.has(t)||s.set(t,[]),s.get(t).push(e))}const a=[];for(const[e,t]of s.entries())t.some(e=>e.checked)||a.push(t[0]);const c=Array.from(e.querySelectorAll('input[type="checkbox"]')).filter(e=>!e.disabled),l=[],d=new Map;for(const e of c){if(!this.help.isRequired(e))continue;const t=this.help.getGroupName(e);t?(d.has(t)||d.set(t,[]),d.get(t).push(e)):e.checked||l.push(e)}const u=[];for(const[e,t]of d.entries())t.some(e=>e.checked)||u.push(t[0]);return[n,o,r,a,l,u,Array.from(e.querySelectorAll('input[type="file"]')).filter(e=>!(e.disabled||!this.help.isRequired(e)||e.files&&e.files.length>0)),t].flat()}validate(){const e=this.#s(this.container),t=this.container.querySelectorAll("input, textarea, select");Array.from(t).filter(e=>!e.disabled);for(const n of t)e.includes(n)||this.removeError(n);return e.forEach((e,t)=>this.addError(e,t)),this.#i(t),e.length?(this.container.setAttribute("data-form-status","error"),!1):(this.container.setAttribute("data-form-status","success"),!0)}ifSuccess(e="Inviato con successo"){1==this.validate()&&P.toast.success(e)}addNewRule(e){if("function"!=typeof e)throw new Error("Rule must be a function");return this._rules.push(e),this}},scrollHorizontal:L}),n(107),n(48)})()})();
|
|
1
|
+
(()=>{var e={795(){function e(e="svg"){const t=getComputedStyle(document.documentElement),n=[];for(let o=0;o<20;o++){const r=t.getPropertyValue("--"+e+"-color-"+o).toLocaleLowerCase().split("&");if(""==!r[0]&&""==!r[1]){let e=[r[0],r[1]];n.push(e)}}return n}const t=[e("svg"),e("lottie")];let n=pgs(document).querySelectorAll("toggleDarkmode");function o(e,n){e.forEach(e=>{const t=e.querySelector("i");t&&(t.classList.toggle("fa-moon",!n),t.classList.toggle("fa-sun",n))}),function(){function e(e,n="svg"){let o="true"!==document.documentElement.getAttribute("data-darkmode");e.querySelectorAll("[fill], [stroke]").forEach(e=>{for(const n of t)for(const t of n){let n=(t[0]||"").replace(/\s/g,""),r=(t[1]||"").replace(/\s/g,"");["fill","stroke"].forEach(t=>{const i=e.getAttribute(t);e.style.transition="fill 0.5s ease, stroke 0.5s ease",o?i==r&&e.setAttribute(t,n):i==n&&e.setAttribute(t,r)})}})}document.querySelectorAll('object[type="image/svg+xml"]').forEach(t=>{if(t.addEventListener("load",()=>{const n=t.contentDocument;n&&e(n,"svg")}),t.contentDocument){const e=new Event("load");t.dispatchEvent(e)}}),document.querySelectorAll("lottie-player").forEach(t=>{if(t.addEventListener("load",()=>{const n=t.shadowRoot.querySelector("svg");n&&e(n,"lottie")}),t.shadowRoot){const e=new Event("load");t.dispatchEvent(e)}})}()}"true"===localStorage.getItem("screenIsDarkMode")&&(document.body.classList.add("darkmode"),document.querySelector(":root").setAttribute("data-darkmode","true"),document.body.setAttribute("data-darkmode","true")),n.forEach(e=>{let t="true"===document.documentElement.getAttribute("data-darkmode");o(n,t),e.addEventListener("click",()=>{let e="true"!==document.documentElement.getAttribute("data-darkmode");localStorage.setItem("screenIsDarkMode",e),document.body.classList.toggle("darkmode",e),document.body.setAttribute("data-darkmode",e),document.querySelector(":root").setAttribute("data-darkmode",e),o(n,e)})})},359(){document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll('object[type="image/svg+xml"]').forEach(e=>{function t(t){if(!t)return;const n=t.querySelector("svg");if(!n)return;const o=window.getComputedStyle(e);n.setAttribute("preserveAspectRatio","cover"===o.objectFit?"xMidYMid slice":"xMidYMid meet")}function n(){const n=e.contentDocument;if(!n)return;if(!n.querySelector("svg"))return;if(t(n),e.__objectResizeObserver)return;let o=0;const r=new ResizeObserver(()=>{o||(o=requestAnimationFrame(()=>{o=0,t(n)}))});r.observe(e),e.__objectResizeObserver=r}e.contentDocument&&e.contentDocument.querySelector("svg")?n():e.addEventListener("load",n,{once:!0})}),document.body.classList.add("object-loaded")})},48(){const e="pgs_cookie_preferences_v1";function t(){window.dataLayer=window.dataLayer||[],window.gtag=window.gtag||function(){window.dataLayer.push(arguments)}}function n(e,t,n){if(!(e instanceof HTMLElement&&t))return;const o=(e.getAttribute("pgs")||"").split(/\s+/).filter(Boolean),r=n?[...new Set([...o,t])]:o.filter(e=>e!==t);r.length>0?e.setAttribute("pgs",r.join(" ")):e.removeAttribute("pgs")}function o(){const o=pgs(document).querySelector("cookieConsent");if(!o)return;const r=o.querySelector('[pgs~="cookieConsent-toggleAnalytics"]'),i=o.querySelector('[pgs~="cookieConsent-actionAccept"]'),s=o.querySelector('[pgs~="cookieConsent-actionReject"]'),a=document.querySelectorAll('[pgs~="cookieConsent-actionOpen"]'),c=(o.dataset.gaId||"").trim(),l=c.length>0;let d=null;function u(e){o.hidden=!e,o.setAttribute("aria-hidden",String(!e)),document.body.classList.toggle("cookieConsent-open",e),e?(d=document.activeElement,setTimeout(()=>{o.focus()},0)):d instanceof HTMLElement&&d.focus({preventScroll:!0})}function p(){u(!1)}function g(r){!function(t){try{localStorage.setItem(e,JSON.stringify({...t,updatedAt:(new Date).toISOString()}))}catch(e){console.warn("PGS cookie consent: impossibile salvare le preferenze",e)}}({analytics:r}),n(o,"cookieConsent-accepted",!!r),n(o,"cookieConsent-declined",!r),function({allowAnalytics:e,measurementId:n}){t(),e?(window.gtag("consent","update",{analytics_storage:"granted"}),function(e){if(!e||window.__PGS_gaLoaded)return;window.__PGS_gaLoaded=!0;const t=document.createElement("script");t.async=!0,t.src=`https://www.googletagmanager.com/gtag/js?id=${e}`,document.head.appendChild(t),window.gtag("js",new Date),window.gtag("config",e,{anonymize_ip:!0,allow_google_signals:!1})}(n)):window.gtag("consent","update",{analytics_storage:"denied"})}({allowAnalytics:!!r,measurementId:c})}!function({root:e,analyticsToggle:t,acceptAllButton:n,rejectButton:o,openButtons:r}){e.dataset.cookieComponent="consent",t?.setAttribute("data-cookie-toggle","analytics"),n?.setAttribute("data-cookie-action","accept"),o?.setAttribute("data-cookie-action","reject"),e.querySelector('[pgs~="cookieConsent-featureEssential"]')?.setAttribute("data-cookie-feature","essential"),e.querySelector('[pgs~="cookieConsent-featureAnalytics"]')?.setAttribute("data-cookie-feature","analytics"),r.forEach(e=>{e.setAttribute("data-cookie-action","open")})}({root:o,analyticsToggle:r,acceptAllButton:i,rejectButton:s,openButtons:a}),r&&(r.disabled=!l,l?n(o,"cookieConsent-gaUnavailable",!1):(r.checked=!1,n(o,"cookieConsent-gaUnavailable",!0))),t(),window.gtag("consent","default",{analytics_storage:"denied"}),i?.addEventListener("click",()=>{r&&l&&(r.checked=!0),g(!!l),p()}),s?.addEventListener("click",()=>{const e=!!r&&r.checked&&l;!e&&r&&(r.checked=!1),g(e),p()}),r?.addEventListener("change",e=>{!l&&e.target instanceof HTMLInputElement&&(e.target.checked=!1)}),o.addEventListener("keydown",e=>{if("Escape"===e.key)e.preventDefault(),p();else if("Tab"===e.key){const t=o.querySelectorAll('a[href], button:not([disabled]), input:not([disabled]), [tabindex]:not([tabindex="-1"])');if(0===t.length)return;const n=t[0],r=t[t.length-1];e.shiftKey||document.activeElement!==r||(e.preventDefault(),n.focus()),e.shiftKey&&document.activeElement===n&&(e.preventDefault(),r.focus())}}),a.forEach(e=>{e.addEventListener("click",e=>{e.preventDefault(),u(!0)})});const f=function(){try{return function(e){try{return e?JSON.parse(e):null}catch(e){return console.warn("PGS cookie consent: impossibile leggere le preferenze",e),null}}(localStorage.getItem(e))}catch(e){return null}}();f&&"boolean"==typeof f.analytics?(r&&(r.checked=!!f.analytics&&l),g(f.analytics&&l),p()):u(!0)}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",o):o()},107(){const e=pgs(document).querySelector("header");function t(){if(!e)return;const t=window.getComputedStyle(document.documentElement).marginTop??0,n=e.offsetHeight,o=document.querySelector("body"),r=n+parseInt(t),i="true"===document.querySelector("header").getAttribute("data-header-scroll")?0:r;o.style.setProperty("--heightOfHeader",`${r}px`),o.style.setProperty("--heightOfHeaderScroll",`${i}px`)}!function(){if(!e)return;const t=pgs(e).querySelectorAll("header-element");t.length&&(t.forEach(t=>{let n,o=!1,r=0;const i=()=>{r||(r=requestAnimationFrame(()=>{r=0,function(r){let i,s=window.getComputedStyle(r),a=parseFloat(s.paddingLeft)+parseFloat(s.paddingRight),c=parseFloat(s.gap),l=parseInt(r.offsetWidth-a);if(o)i=n;else{let e=[];Array.from(r.children).filter(e=>!pgs(e).contains("header-element-onlyMobile")).forEach(t=>{pgs(t).contains("header-element-hamburger")||e.push(...t.children)}),c=Math.round(c*(e.length-1)),i=e.reduce((e,t)=>e+t.offsetWidth,0)-2+c}window.innerWidth<600?(pgs(e).state.add("mobileActive"),pgs(t).state.add("mobileActive")):l<i?(pgs(e).state.add("mobileActive"),pgs(r).state.add("mobileActive"),o=!0,n=i):(pgs(e).state.remove("mobileActive"),pgs(r).state.remove("mobileActive"))}(t)}))};new ResizeObserver(i).observe(t),i()}),window.addEventListener("resize",()=>{window.innerWidth>768&&(e.style.transform="translateY(0)")}))}(),t(),window.addEventListener("resize",t),window.addEventListener("scroll",t);let n=window.scrollY;window.addEventListener("scroll",()=>{if(!e)return;let t=window.scrollY;window.innerHeight<=900&&(t>=80?t>n?(e.style.transform="translateY(-100%)",e.setAttribute("data-header-scroll",!0)):(e.style.transform="translateY(0px)",e.setAttribute("data-header-scroll",!1)):(e.style.transform="translateY(0)",e.setAttribute("data-header-scroll",!1))),n=t})}};const t={};function n(o){const r=t[o];if(void 0!==r)return r.exports;const i=t[o]={exports:{}};return e[o](i,i.exports,n),i.exports}(()=>{"use strict";function e(e){const t="pgs";if(!e)throw new TypeError("pgs(root): root richiesto");const n="function"==typeof e.getAttribute&&"function"==typeof e.setAttribute;if("function"!=typeof e.querySelector||"function"!=typeof e.querySelectorAll)throw new TypeError("pgs(root): root deve supportare querySelector/querySelectorAll");function o(t){throw new TypeError(`pgs(${e.nodeName||"root"}).${t}(): disponibile solo su Element (non su Document)`)}function r(e){return Array.isArray(e)&&(e=e.join(",")),String(e).split(",").map(e=>e.trim()).filter(Boolean).map(e=>`[${t}~="${e}"]`).join(",")}function i(e,n=" "){return(e.getAttribute(t)||"").split(n).filter(Boolean)}function s(e,n,o=" "){e.setAttribute(t,n.join(o))}const a=function(){function a(){return a}return a.querySelector=function(t){return e.querySelector(r(t))},a.querySelectorAll=function(t){return e.querySelectorAll(r(t))},a.add=function(...t){if(!n)return o("add");const r=i(e);for(const e of t)r.includes(e)||r.push(e);return s(e,r),a},a.remove=function(...t){return n?(s(e,i(e).filter(e=>!t.includes(e))),a):o("remove")},a.toggle=function(t,r){if(!n)return o("toggle");const s=i(e).includes(t);return void 0!==r?(r&&!s&&a.add(t),!r&&s&&a.remove(t),!!r):s?(a.remove(t),!1):(a.add(t),!0)},a.contains=function(t){return n?i(e).includes(t):o("contains")},Object.defineProperty(a,"value",{get(){if(n)return e.getAttribute(t)},set(r){if(!n)return o("value");e.setAttribute(t,r)}}),a}();return a.state=function(t){if(!n)return;const o=(n=" ")=>(e.getAttribute(t)||"").split(n).filter(Boolean),r=(n,o=" ")=>e.setAttribute(t,n.join(o));function i(...e){return i.add(...e),i}return i.add=function(...e){const t=e.flat().map(e=>String(e).trim()).filter(Boolean),n=o();for(const e of t)n.includes(e)||n.push(e);return r(n),i},i.remove=function(...e){const t=e.flat().map(e=>String(e).trim()).filter(Boolean),n=o().filter(e=>!t.includes(e));return r(n),i},i.toggle=function(e,t){const n=String(e).trim();if(!n)return!1;const i=o(),s=i.includes(n);return void 0!==t?(t&&!s&&(i.push(n),r(i)),!t&&s&&r(i.filter(e=>e!==n)),!!t):s?(r(i.filter(e=>e!==n)),!1):(i.push(n),r(i),!0)},i.contains=function(e){const t=String(e).trim();return!!t&&o().includes(t)},Object.defineProperty(i,"value",{get:()=>e.getAttribute(t),set(n){e.setAttribute(t,n)}}),i}("pgs-state"),a.option=function(t){if(n)return o.contains=function(n){const o=e.getAttribute(t)||"",r=String(n).replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`(?:^|\\s)${r}(?:\\[[^\\]]*\\])?(?=\\s|$)`).test(o)},o.getValueBrackets=function(n){const o=e.getAttribute(t)||"",r=String(n).replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=o.match(new RegExp(`(?:^|\\s)${r}\\[([^\\]]*)\\]`));return i?i[1]:void 0},Object.defineProperty(o,"value",{get:()=>e.getAttribute(t),set(n){e.setAttribute(t,n)}}),o;function o(){return o}}("pgs-option"),a}const t={};function o(e,n){const o=String(e||"").trim().replace(/^pgs[_-\s]*/i,"").toLowerCase();if(!o)throw new TypeError("pgs.registerImport(...modules): ogni modulo deve avere name o PGS_name");t[o]={name:e,module:n}}e.registerImport=function(...t){return t.flat().forEach(e=>{!e||"object"!=typeof e||e.PGS_name||e.name?o(e?.PGS_name||e?.name,e):Object.entries(e).forEach(([e,t])=>o(e,t))}),e},e.registerModules=function(t={}){return Object.entries(t).forEach(([t,n])=>{const o=String(t||"").trim();if(o){if(Object.prototype.hasOwnProperty.call(e,o)&&e[o]!==n)throw new Error(`pgs.registerModules(): "${o}" e' gia' definito su pgs`);e[o]=n}}),e},e.import=function(...e){return e.flat().reduce((e,n)=>{const o=String(n||"").trim().replace(/^pgs[_-\s]*/i,"").toLowerCase(),r=t[o];if(!r)throw new Error(`pgs.import(): modulo "${n}" non registrato`);return e[r.name]=r.module,e},{})},globalThis.pgs??=e,n(795),n(359);const r=new WeakMap;let i=0;function s(e,t){return Array.from(e.children).find(e=>pgs(e).contains(t))}function a(e=document){pgs(e).querySelectorAll("accordion").forEach(e=>{if(r.has(e))return;const t=s(e,"accordion-button"),n=s(e,"accordion-content");if(!t||!n)return;const o=(i+=1,i),c=`acc-btn-${o}`,l=`acc-panel-${o}`,d=pgs(e).state.contains("open");function u(e,t,n){const o=(t?.textContent||"").trim().replace(/\s+/g," ");t.setAttribute("aria-label",`${e?"Chiudi":"Apri"} ${o||"sezione"}`),t.setAttribute("aria-expanded",String(e)),n.hidden=!e}function p(){const o=!pgs(e).state.contains("open");pgs(e).state.toggle("open",o),u(o,t,n),function(){for(const t of pgs(document).querySelectorAll("accordion")){if(t===e)continue;const n=pgs(t).querySelector("accordion-button"),o=pgs(t).querySelector("accordion-content");n&&o&&(pgs(t).state().remove("open"),u(!1,n,o))}}(),o&&setTimeout(()=>e.scrollIntoView({block:"nearest",inline:"nearest"}),100)}t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.id||t.setAttribute("id",c),n.id||n.setAttribute("id",l),t.setAttribute("aria-controls",n.id),n.setAttribute("role","region"),n.setAttribute("aria-labelledby",t.id),u(d,t,n),t.addEventListener("click",p),t.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),p())}),r.set(e,{element:e,button:t,content:n,open:function(){pgs(e).state.contains("open")||p()},close:function(){pgs(e).state.contains("open")&&p()},toggle:p,refresh:()=>(a(e.parentNode||document),r.get(e)),isOpen:()=>pgs(e).state.contains("open")})})}a();const c={init:a,api:function(e){return r.get(e)}},l=new WeakMap,d=new Set;let u=0;function p(e){return e instanceof Element&&pgs(e).contains("dropdown-content")}function g(e){const t=l.get(e);if(!t||!t.isOpen())return;const{trigger:n,content:o}=t,{side:r,align:i}=function(e){const t=(pgs(e).option.getValueBrackets("position")||"bottom center").trim().toLowerCase().split(/\s+/).filter(Boolean),n=t.find(e=>["top","right","bottom","left"].includes(e))||"bottom",o=t.find(e=>["top","right","bottom","left","center"].includes(e)&&e!==n)||"center";return{side:n,align:o}}(e),s=n.getBoundingClientRect(),a=o.getBoundingClientRect(),c=document.documentElement.clientWidth,d=Math.max(8,c-a.width-8);let u=s.left+(s.width-a.width)/2,p=s.bottom+8;var g,f;"top"!==r&&"bottom"!==r||(p="top"===r?s.top-a.height-8:s.bottom+8,"left"===i&&(u=s.left),"right"===i&&(u=s.right-a.width)),"left"!==r&&"right"!==r||(u="left"===r?s.left-a.width-8:s.right+8,p=s.top+(s.height-a.height)/2,"top"===i&&(p=s.top),"bottom"===i&&(p=s.bottom-a.height)),"left"===r&&u<8&&(u=s.right+8),"right"===r&&u+a.width>c-8&&(u=s.left-a.width-8),g=u,f=d,u=Math.min(Math.max(g,8),f),o.style.setProperty("--dropdown-left",`${Math.round(u)}px`),o.style.setProperty("--dropdown-top",`${Math.round(p)}px`)}function f(){d.forEach(g)}function m(e){const t=l.get(e);t&&t.isOpen()&&(pgs(e).state.remove("open"),t.trigger.setAttribute("aria-expanded","false"),d.delete(e))}function h(e){const t=l.get(e);t&&!t.isOpen()&&(d.forEach(t=>{t!==e&&m(t)}),pgs(e).state.add("open"),t.trigger.setAttribute("aria-expanded","true"),d.add(e),g(e))}function b(e){const t=l.get(e);t&&(t.isOpen()?m(e):h(e))}function y(e=document){(function(e){const t=e instanceof Element&&pgs(e).contains("dropdown")?[e]:[];return t.push(...pgs(e).querySelectorAll("dropdown")),t})(e).forEach(e=>{if(l.has(e))return;const t=(n=e,Array.from(n.children).find(p)||pgs(n).querySelector("dropdown-content"));var n;if(!t)return;const o=function(e,t){const n=Array.from(e.children).filter(e=>e!==t);return n.find(e=>pgs(e).contains("dropdown-button"))||n.find(e=>!p(e))||e}(e,t),r=(u+=1,u);o.id||(o.id=`dropdown-btn-${r}`),t.id||(t.id=`dropdown-panel-${r}`),o.matches("button")&&!o.hasAttribute("type")&&o.setAttribute("type","button"),o.setAttribute("aria-haspopup","true"),o.setAttribute("aria-controls",t.id),o.setAttribute("aria-expanded",String(pgs(e).state.contains("open"))),t.setAttribute("aria-labelledby",o.id);const i={element:e,trigger:o,content:t,open:()=>h(e),close:()=>m(e),toggle:()=>b(e),refresh:()=>(y(e.parentNode||document),g(e),l.get(e)),isOpen:()=>pgs(e).state.contains("open")};o.addEventListener("click",t=>{p(t.target)||(t.preventDefault(),t.stopPropagation(),b(e))}),t.addEventListener("click",e=>e.stopPropagation()),l.set(e,i),i.isOpen()&&d.add(e),g(e)})}document.addEventListener("click",e=>{var t;t=e.target,Array.from(d).some(e=>e.contains(t))||d.forEach(m)}),document.addEventListener("keydown",e=>{"Escape"===e.key&&d.forEach(m)}),window.addEventListener("resize",f),window.addEventListener("scroll",f,!0),y();const v={init:y,api:function(e){return l.get(e)}},A=new WeakMap;function w(e=document){pgs(e).querySelectorAll("menu").forEach(e=>{A.has(e)||(e.querySelectorAll("li").forEach(e=>{const t=e.querySelector("ul");if(t){const n=document.createElement("button");n.type="button",n.innerHTML="<span>⏷</span>",pgs(n).add("menu-buttonIcon"),e.querySelector("a").insertAdjacentElement("afterend",n),pgs(e).add("dropdown"),pgs(n).add("dropdown-button"),pgs(n).add("buttonNohover"),pgs(t).add("dropdown-content")}}),A.set(e,{element:e,type:"horizontal",refresh:()=>(w(e.parentNode||document),A.get(e))}),v.init(e))})}w();const S={init:w,api:function(e){return A.get(e)}},E=new WeakMap;function k(e="modal"){pgs(document).querySelectorAll(e).forEach(t=>{if(E.has(t))return;const n=pgs(t).querySelector("modal-button"),o=t.querySelector("dialog");if(!n||!o)return;const r='<button pgs="buttonClose modal-close" type="button" tabindex="0" aria-label="Chiudi"><i class="fa-solid fa-close"></i></button>',i=pgs(t)?.querySelector("modal-dialog-content-header"),s=pgs(t).option.contains("disableBackdropClose"),a=pgs(t).option.contains("history"),c=pgs(t).option.getValueBrackets("containerID"),l=pgs(t).option.getValueBrackets("containerPGS"),d=pgs(o).option.contains("topLevel");pgs(t).querySelector("modal-close")||(i?i.insertAdjacentHTML("beforeend",r):o.insertAdjacentHTML("beforeend",r));const u=pgs(t).querySelector("modal-close");function p(e=!0){n?.setAttribute("aria-expanded",e),o?.setAttribute("aria-expanded",e)}function g(e){e?.stopImmediatePropagation(),o.open?f(e):(o.open||document.querySelectorAll("dialog[open]").forEach(e=>e.close()),p(!0),d?o.showModal():o.show(),t.dispatchEvent(new CustomEvent("modal:open")),o.dispatchEvent(new CustomEvent("modal:open")))}function f(e){e?.stopImmediatePropagation(),p(!1),o.close(),t.dispatchEvent(new CustomEvent("modal:close")),o.dispatchEvent(new CustomEvent("modal:close"))}pgs(o).add("dialog modal-dialog"),n.setAttribute("role","button"),n.setAttribute("aria-label","apri modale"),d||(c?document.querySelector("#"+c)?.append(o):l?pgs(document).querySelector(l)?.append(o):document.body.append(o)),n.addEventListener("click",e=>g(e)),n.addEventListener("keypress",e=>!o.open&&("Enter"===e.key||" "===e.key)&&g(e)),o.addEventListener("close",()=>p(!1)),o.addEventListener("click",e=>{e.target!=o||s||f(e)}),u?.addEventListener("click",e=>f(e)),a&&n.id&&(setTimeout(function(){new URLSearchParams(window.location.search).get("modal")===n.id&&(document.getElementById(n.id)?.scrollIntoView({behavior:"smooth"}),g())},1),new MutationObserver(()=>{let e=o.hasAttribute("open");try{const t=new URL(window.location.href),o=new URLSearchParams(t.search);e?o.set("modal",n.id):o.delete("modal"),t.search=o.toString()?`?${o.toString()}`:"",window.history.pushState({modal:n.id,open:e},"",t)}catch(e){}}).observe(o,{attributes:!0,attributeFilter:["open"]}),window.addEventListener("popstate",()=>{try{const e=new URLSearchParams(window.location.search).get("modal")===n.id;e&&!o.open&&o.showModal(),!e&&o.open&&f()}catch(e){}})),E.set(t,{element:t,button:n,dialog:o,closeButton:u,open:function(e){o.open||g(e)},close:function(e){o.open&&f(e)},toggle:g,refresh:()=>(k(e),E.get(t)),isOpen:()=>o.open})})}k();const q={init:k,api:function(e){return E.get(e)}};function L(e,t){const n=(()=>{let e=0,t=0,n=0,o=!1;return{update:function(r){const i=performance.now(),s=i-e;let a=Math.abs(r.deltaY);return 1===r.deltaMode?a*=16:2===r.deltaMode&&(a*=r.currentTarget?.clientHeight||800),a<30&&s<35&&t++,n++,n>=6&&(o=t>=3,t=0,n=0),e=i,o},get value(){return o}}})();let o=e;o.addEventListener("wheel",e=>{const r=t;if(n.update(e))return;if(e.ctrlKey)return;if(Math.abs(e.deltaX)>Math.abs(e.deltaY))return;let i=e.deltaY;1===e.deltaMode?i*=16:2===e.deltaMode&&(i*=o.clientHeight);const s=o.scrollLeft<=0,a=o.scrollLeft+o.clientWidth>=o.scrollWidth-1;(i>0&&!a||i<0&&!s)&&(e.preventDefault(),o.scrollLeft+=i*r)},{passive:!1})}const M=new WeakMap;class x{constructor({selector:e,viewRatio:t=.97,optionIntersectionObserver:n={},scrollOptions:o={}}={}){this.selector=e,this.viewRatio=t,this.optionIntersectionObserver={threshold:Array.from({length:101},(e,t)=>t/100),rootMargin:"0px",...n},this.scrollOptions={behavior:"smooth",inline:"center",block:"nearest",container:"nearest",...o},this.container=this.selector?pgs(this.selector).querySelector("slides-container"):null}#e(){const e=this.selector;pgs(e).querySelector("slides-prec")||pgs(e).querySelector("slides-next")||(e.insertAdjacentHTML("afterbegin",'<button pgs="slides-prec buttonIcon" type="button" class="precButton" aria-label="slide precedente"> <span> <i class="fa-solid fa-arrow-left"></i></span></button>'),e.insertAdjacentHTML("beforeend",'<button pgs="slides-next buttonIcon" type="button" class="nextButton" aria-label="prossima slide"> <span> <i class="fa-solid fa-arrow-right"></i></span></button>')),pgs(e).querySelector("slides-dots")||(e.insertAdjacentHTML("beforeend",'<div pgs="slides-dots" class="slides-dots"></div>'),Array.from(this.container.children).forEach(()=>{pgs(e).querySelector("slides-dots").insertAdjacentHTML("beforeend",'<button type="button" class="slide-dot" aria-label="vai alla prossima slide"></button>')}))}#t(){const e=this.container.querySelectorAll(".view");let t;t=pgs(this.selector).option.contains("singleScroll")?e[e.length-1]:e[0];const n=t?.previousElementSibling;n?.scrollIntoView(this.scrollOptions),n?.focus({preventScroll:!0})}#n(){const e=this.container.querySelectorAll(".view");let t;t=pgs(this.selector).option.contains("singleScroll")?e[0]:e[e.length-1];const n=t?.nextElementSibling;console.log(t,n),n?.scrollIntoView(this.scrollOptions),n?.focus({preventScroll:!0})}#o(e){this.container.children[e].scrollIntoView(this.scrollOptions)}#r(e,t,n,o,r){e.forEach(e=>{const i=.9+.1*e.intersectionRatio,s=i>=.98;!pgs(e.target).option.contains("notScrollAnimation")&&e.target.firstElementChild&&e.target.firstElementChild.style.setProperty("--visible-percent",`${i}`),e.target.classList.toggle("view",s),e.target.classList.toggle("notView",!s);const a=e.target.parentNode.children,c=a[0].classList.contains("view"),l=a[a.length-1].classList.contains("view");o.disabled=l,n.disabled=c,o.setAttribute("aria-disabled",String(l)),n.setAttribute("aria-disabled",String(c));const d=Array.from(t.children).filter(e=>e.classList.contains("view"));r.forEach((e,n)=>{const o=d.some(e=>Array.from(t.children).indexOf(e)===n);e.classList.toggle("active",o),e.setAttribute("aria-current",o?"true":"false")})})}execute(){const e=this.selector;if(!this.container)return;this.#e();const t=pgs(e).querySelector("slides-prec"),n=pgs(e).querySelector("slides-next"),o=Array.from(pgs(e).querySelector("slides-dots").children);pgs(e).option.contains("notScrollWithMouse")||L(this.container,5),o.forEach((e,t)=>e.addEventListener("click",e=>this.#o(t))),t.addEventListener("click",e=>this.#t(),{passive:!0}),n.addEventListener("click",e=>this.#n(),{passive:!0});const r=new IntersectionObserver(e=>this.#r(e,this.container,t,n,o),{root:this.container,...this.optionIntersectionObserver});Array.from(this.container.children).forEach(e=>r.observe(e)),M.set(this.selector,{element:this.selector,container:this.container,previous:()=>this.#t(),next:()=>this.#n(),goTo:e=>this.#o(e),getCurrentIndexes:()=>Array.from(this.container.children).map((e,t)=>e.classList.contains("view")?t:-1).filter(e=>-1!==e),getCurrentElements:()=>Array.from(this.container.children).filter(e=>e.classList.contains("view")),getTotal:()=>this.container.children.length,isAtStart:()=>this.container.children[0]?.classList.contains("view")||!1,isAtEnd:()=>{const e=this.container.children,t=e[e.length-1];return t?.classList.contains("view")||!1},refresh:()=>(T(this.selector.parentNode||document),M.get(this.selector))})}}function T(e=document){pgs(e).querySelectorAll("slides").forEach(e=>{M.has(e)||new x({selector:e}).execute()})}T();const C={init:T,api:function(e){return M.get(e)}},O=new WeakMap;function I(e=document){pgs(e).querySelectorAll("steps").forEach(e=>{O.has(e)||(pgs(e).querySelectorAll("steps-step").forEach((e,t)=>{let n;if(pgs(e).querySelector("steps-step-circle")?n=pgs(e).querySelector("steps-step-circle"):(n=document.createElement("span"),pgs(n).add("steps-step-circle"),n.textContent=t+1,e.insertAdjacentElement("afterbegin",n)),!pgs(e).querySelector("steps-step-line")){const t=document.createElement("span");pgs(t).add("steps-step-line"),e.insertAdjacentElement("afterbegin",t)}}),O.set(e,{element:e,steps:()=>Array.from(pgs(e).querySelectorAll("steps-step")),getStep:t=>pgs(e).querySelectorAll("steps-step")[t],getTotal:()=>pgs(e).querySelectorAll("steps-step").length,refresh:()=>(O.delete(e),I(e.parentNode||document),O.get(e))}))})}I();const _={init:I,api:function(e){return O.get(e)}},j=new WeakMap;function N(e=document){pgs(e).querySelectorAll("stepTabs").forEach(e=>{if("true"===e.dataset.stepTabsInitialized)return;e.dataset.stepTabsInitialized="true";const t=pgs(e).querySelector("stepTabs-prev"),n=pgs(e).querySelector("stepTabs-next"),o=pgs(e).querySelector("stepTabs-restart"),r=pgs(e).querySelector("stepTabs-dots"),i=pgs(e).querySelector("stepTabs-container"),s=pgs(i).querySelectorAll("tab"),a=s.length,c=Array.from(s).filter(e=>pgs(e).state.contains("is-locked"));let l=0;t&&(t.disabled=!0);let d=!1;if(!i||0===a)return;const u=[];function p(e,t,n){e&&n!==pgs(e).state.contains(t)&&pgs(e).state.toggle(t,n)}function g(){const e=s[l];t&&(t.disabled=0===l),n&&(n.disabled=l===a-1||pgs(e).state.contains("is-locked"))}function f(t,n=!0){l=Math.min(Math.max(t,0),a-1);const o=s[l];d=!0,s.forEach((e,t)=>p(e,"is-active",t===l)),g(),u.forEach((e,t)=>{p(e,"is-active",t===l),p(e,"is-completed",t<l)}),d=!1,n&&!e.closest("dialog")&&(o?.focus(),e?.scrollIntoView({behavior:"smooth",block:"start"})),e.dispatchEvent(new CustomEvent("stepTabs:change",{detail:{current:l,total:a}}))}function m(){f(0),c.forEach(e=>pgs(e).state.add("is-locked"))}r&&(r.innerHTML="",s.forEach((e,t)=>{const n=pgs(e).option.getValueBrackets("tabIcon")||"fa-circle",o=document.createElement("button");o.type="button",pgs(o).add("stepTabs-dots-dot"),o.setAttribute("data-step",t),o.innerHTML=`<i class="fa-solid ${n}"></i>`,o.addEventListener("click",()=>{pgs(o).state.contains("is-completed")&&f(t,!0)}),r.appendChild(o),u.push(o)})),f(0,!1);const h=new MutationObserver(()=>{d||g()});s?.forEach(e=>h.observe(e,{attributes:!0,attributeFilter:["pgs-state"]})),t?.addEventListener("click",e=>f(l-1)),n?.addEventListener("click",e=>{g(),n.disabled||f(l+1)}),o?.addEventListener("click",e=>m(),{capture:!0}),j.set(e,{element:e,container:i,restart:m,goTo:f,next:()=>f(l+1),prev:()=>f(l-1),toggleLock:(e,t=!0)=>"number"==typeof e&&s[e]&&(pgs(s[e]).state.toggle("is-locked",t),f(l)),refresh:()=>(N(e.parentNode||document),j.get(e)),getCurrent:()=>l,getState:()=>({current:l,total:a})})})}N();const $={init:N,api:function(e){return j.get(e)}},R={_escapeHtml:e=>String(e??""),_getDuration(e){const t=e.duration,n=Number.parseInt(t,10);return Number.isNaN(n)?5e3:n},_getApi:e=>"toast"===String(e.element||"notification").trim()?P.toast:P.alert,_getType(e,t){const n=String(e.type||"info").trim();return"function"==typeof t[n]?n:"info"},_getData(e){try{return JSON.parse(e.dataset.notification||"{}")}catch(e){return console.warn("PGS notification: dati non validi",e),{}}},_getContent(e,t){const n=this._escapeHtml(t),o=this._escapeHtml(e);return o?n?`\n <span pgs="notification-element-title">${o}</span>\n <br>\n <span pgs="notification-element-content">${n}</span>\n `:`<span pgs="notification-element-title">${o}</span>`:n},initNotification(e,t,n,o,r,i="replace",s=null){let a=pgs(document).querySelector(t);if(!a){const e=document.createElement("div");pgs(e).add(t),e.setAttribute("aria-live","polite"),e.setAttribute("aria-relevant","additions"),document.body.appendChild(e),a=e}const c=document.createElement(s?"a":"div");function l(){"stack"==i?c.style.translate="120%":c.style.opacity="0",setTimeout(()=>c.remove(),300)}"replace"==i&&(a.innerHTML=""),s&&(c.href=s),r>0&&c.style.setProperty("--notification-timeout",r+"ms"),pgs(c).state.add(e),pgs(c).add("notification-element"),c.setAttribute("role","error"==e?"alert":"status"),c.innerHTML=`${n} <p>${o}</p>`,a.appendChild(c),r>0&&setTimeout(()=>{l()},r);const d=document.createElement("button");d.type="button",d.ariaLabel="Rimuovi notifica",d.innerHTML='<i class="fa-solid fa-xmark"></i>',d.setAttribute("pgs","buttonClose"),c.insertAdjacentElement("afterbegin",d),d.addEventListener("click",function(e){e.preventDefault(),e.stopPropagation(),e.stopImmediatePropagation(),l()})},deleteAll(e){let t=pgs(document).querySelector(e);t&&(t.innerHTML="")},trigger(e=document){pgs(e).querySelectorAll("notificationTrigger").forEach(e=>{if(!e||"true"===e.dataset.initialize)return;e.dataset.initialize="true";const t=this._getData(e),n=String(t.title||"").trim(),o=String(t.message||"").trim();if(!n&&!o)return void e.remove();const r=t.link||null,i=t.icon||void 0,s=this._getDuration(t),a=this._getApi(t),c=this._getType(t,a),l=this._getContent(n,o);a===P.toast?a[c](l,s,i):a[c](l,r,s,i),e.remove()})}};function D(e=document){return R.trigger(e)}const P={trigger:D,alert:{error:(e="Errore",t=null,n=0,o='<i class="fa-solid fa-circle-xmark"></i>')=>R.initNotification("error","notification",o,e,n,"stack",t),success:(e="Aggiornato",t=null,n=0,o='<i class="fa-solid fa-check"></i>')=>R.initNotification("success","notification",o,e,n,"stack",t),info:(e="Aggiornamento",t=null,n=0,o='<i class="fa-solid fa-circle-info"></i>')=>R.initNotification("info","notification",o,e,n,"stack",t),warning:(e="Attenzione",t=null,n=0,o='<i class="fa-solid fa-triangle-exclamation"></i>')=>R.initNotification("warning","notification",o,e,n,"stack",t),deleteAll:()=>R.deleteAll("notification")},toast:{error:(e="Errore",t=4e3,n='<i class="fa-solid fa-circle-xmark"></i>')=>R.initNotification("error","toast",n,e,t),success:(e="Aggiornato",t=4e3,n='<i class="fa-solid fa-check"></i>')=>R.initNotification("success","toast",n,e,t),info:(e="Aggiornamento",t=0,n='<i class="fa-solid fa-circle-info"></i>')=>R.initNotification("info","toast",n,e,t),warning:(e="Attenzione",t=4e3,n='<i class="fa-solid fa-triangle-exclamation"></i>')=>R.initNotification("warning","toast",n,e,t),deleteAll:()=>R.deleteAll("toast")}};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>D()):D(),e.registerModules({accordion:c,dropdown:v,menu:S,modal:q,notification:P,slides:C,stepTabs:$,steps:_,formValidate:class{constructor({form:e}={}){this.container=e,this._rules=[]}addError(e,t){e.setAttribute("data-form-field-status","error"),0==t&&e.scrollIntoView();let n=e.getAttribute("data-form-field-message");0==t&&n?P.toast.error(n):0==t&&P.toast.error("Compila tutti i campi!")}removeError(e){e.setAttribute("data-form-field-status","")}#i(e){e.forEach(e=>{e.addEventListener("click",t=>this.removeError(e))})}help={isRequired:e=>!!e&&((!0===e.required||"true"===e?.dataset?.required||"true"==e?.getAttribute("aria-required"))&&!e.hidden),isEmptyTextLike:e=>!String(e?.value??"").trim(),isEmptySelect:e=>!String(e?.value??"").trim(),getGroupName:e=>e?.name||e?.getAttribute?.("name")||""};#s(e){const t=[];for(const n of this._rules){const o=n(e);o&&(Array.isArray(o)?t.push(...o):t.push(o))}const n=Array.from(e.querySelectorAll("input")).filter(e=>!e.disabled&&"hidden"!==e.type&&"checkbox"!==e.type&&"radio"!==e.type&&"file"!==e.type&&!!this.help.isRequired(e)&&this.help.isEmptyTextLike(e)),o=Array.from(e.querySelectorAll("textarea")).filter(e=>!e.disabled&&!!this.help.isRequired(e)&&this.help.isEmptyTextLike(e)),r=Array.from(e.querySelectorAll("select")).filter(e=>!e.disabled&&!!this.help.isRequired(e)&&this.help.isEmptySelect(e)),i=Array.from(e.querySelectorAll('input[type="radio"]')).filter(e=>!e.disabled),s=new Map;for(const e of i){if(!this.help.isRequired(e))continue;const t=this.help.getGroupName(e);t&&(s.has(t)||s.set(t,[]),s.get(t).push(e))}const a=[];for(const[e,t]of s.entries())t.some(e=>e.checked)||a.push(t[0]);const c=Array.from(e.querySelectorAll('input[type="checkbox"]')).filter(e=>!e.disabled),l=[],d=new Map;for(const e of c){if(!this.help.isRequired(e))continue;const t=this.help.getGroupName(e);t?(d.has(t)||d.set(t,[]),d.get(t).push(e)):e.checked||l.push(e)}const u=[];for(const[e,t]of d.entries())t.some(e=>e.checked)||u.push(t[0]);return[n,o,r,a,l,u,Array.from(e.querySelectorAll('input[type="file"]')).filter(e=>!(e.disabled||!this.help.isRequired(e)||e.files&&e.files.length>0)),t].flat()}validate(){const e=this.#s(this.container),t=this.container.querySelectorAll("input, textarea, select");Array.from(t).filter(e=>!e.disabled);for(const n of t)e.includes(n)||this.removeError(n);return e.forEach((e,t)=>this.addError(e,t)),this.#i(t),e.length?(this.container.setAttribute("data-form-status","error"),!1):(this.container.setAttribute("data-form-status","success"),!0)}ifSuccess(e="Inviato con successo"){1==this.validate()&&P.toast.success(e)}addNewRule(e){if("function"!=typeof e)throw new Error("Rule must be a function");return this._rules.push(e),this}},scrollHorizontal:L}),n(107),n(48)})()})();
|
package/package.json
CHANGED
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
if (window.innerWidth < 600) {
|
|
56
|
-
document.querySelector("header").
|
|
57
|
-
document.querySelector("[pgs~=header-element]").
|
|
56
|
+
pgs(document.querySelector("header")).state.add("mobileActive");
|
|
57
|
+
pgs(document.querySelector("[pgs~=header-element]")).state.add("mobileActive");
|
|
58
58
|
}
|
|
59
59
|
</script>
|
|
60
60
|
</header>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export default function Accordion() {
|
|
2
|
+
return (
|
|
3
|
+
<ul pgs="grid-1 gapTexts">
|
|
4
|
+
<li pgs="accordion">
|
|
5
|
+
<button pgs="accordion-button" type="button">
|
|
6
|
+
<i className="fa-solid fa-circle-question" aria-hidden="true"></i>
|
|
7
|
+
<span>Domanda frequente</span>
|
|
8
|
+
</button>
|
|
9
|
+
|
|
10
|
+
<div pgs="accordion-content" hidden>
|
|
11
|
+
<p>Risposta di esempio con contenuto testuale riutilizzabile.</p>
|
|
12
|
+
</div>
|
|
13
|
+
</li>
|
|
14
|
+
|
|
15
|
+
<li pgs="accordion">
|
|
16
|
+
<button pgs="accordion-button" type="button">
|
|
17
|
+
<i className="fa-solid fa-circle-info" aria-hidden="true"></i>
|
|
18
|
+
<span>Seconda sezione</span>
|
|
19
|
+
</button>
|
|
20
|
+
|
|
21
|
+
<div pgs="accordion-content" hidden>
|
|
22
|
+
<p>Altro contenuto del pannello accordion.</p>
|
|
23
|
+
</div>
|
|
24
|
+
</li>
|
|
25
|
+
</ul>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export default function Breadcumbs() {
|
|
2
|
+
return (
|
|
3
|
+
<nav aria-label="Breadcrumb">
|
|
4
|
+
<ul pgs="breadcrumb">
|
|
5
|
+
<li pgs="breadcrumb-item">
|
|
6
|
+
<a href="/">Home</a>
|
|
7
|
+
<span pgs="breadcrumb-item-separator" aria-hidden="true">
|
|
8
|
+
>
|
|
9
|
+
</span>
|
|
10
|
+
</li>
|
|
11
|
+
|
|
12
|
+
<li pgs="breadcrumb-item">
|
|
13
|
+
<a href="/blog">Blog</a>
|
|
14
|
+
<span pgs="breadcrumb-item-separator" aria-hidden="true">
|
|
15
|
+
>
|
|
16
|
+
</span>
|
|
17
|
+
</li>
|
|
18
|
+
|
|
19
|
+
<li pgs="breadcrumb-item">
|
|
20
|
+
<span aria-current="page">
|
|
21
|
+
Articolo di prova
|
|
22
|
+
</span>
|
|
23
|
+
</li>
|
|
24
|
+
</ul>
|
|
25
|
+
</nav>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export default function Button() {
|
|
2
|
+
return (
|
|
3
|
+
<div pgs="flexRow">
|
|
4
|
+
<a pgs="button" href="#">
|
|
5
|
+
<i className="fa-duotone fa-solid fa-store"></i>
|
|
6
|
+
About
|
|
7
|
+
</a>
|
|
8
|
+
|
|
9
|
+
<button pgs="button" type="button" pgs-option="buttonReverse">
|
|
10
|
+
Avanti
|
|
11
|
+
<i className="fa-solid fa-arrow-right" aria-hidden="true"></i>
|
|
12
|
+
</button>
|
|
13
|
+
|
|
14
|
+
<button pgs="buttonStrong" type="button">
|
|
15
|
+
<i className="fa-solid fa-check" aria-hidden="true"></i>
|
|
16
|
+
Submit
|
|
17
|
+
</button>
|
|
18
|
+
|
|
19
|
+
<button pgs="buttonIcon" type="button" aria-label="Impostazioni">
|
|
20
|
+
<i className="fa-solid fa-gear" aria-hidden="true"></i>
|
|
21
|
+
</button>
|
|
22
|
+
|
|
23
|
+
<button pgs="buttonMini" type="button" aria-label="Informazioni">
|
|
24
|
+
<i className="fa-solid fa-info" aria-hidden="true"></i>
|
|
25
|
+
</button>
|
|
26
|
+
|
|
27
|
+
<button pgs="buttonBig" type="button" aria-label="Bottone grande">
|
|
28
|
+
<i className="fa-solid fa-rocket" aria-hidden="true"></i>
|
|
29
|
+
Bottone grande
|
|
30
|
+
</button>
|
|
31
|
+
</div>
|
|
32
|
+
);
|
|
33
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export default function Card() {
|
|
2
|
+
return (
|
|
3
|
+
<article pgs="card flexColumn">
|
|
4
|
+
<img pgs="card-img imgCover" src="https://placehold.co/800x500" alt="Immagine segnaposto" />
|
|
5
|
+
|
|
6
|
+
<div pgs="flexColumnTexts">
|
|
7
|
+
<h3>Card riutilizzabile</h3>
|
|
8
|
+
<p>Contenuto descrittivo della card, adatto a liste, anteprime e griglie.</p>
|
|
9
|
+
<a pgs="button" href="#">Leggi di piu</a>
|
|
10
|
+
</div>
|
|
11
|
+
</article>
|
|
12
|
+
);
|
|
13
|
+
}
|
|
14
|
+
export default function CardLink() {
|
|
15
|
+
return (
|
|
16
|
+
<article pgs="card">
|
|
17
|
+
<a pgs="flexColumn" href="">
|
|
18
|
+
<img pgs="card-img imgCover" src="https://placehold.co/800x500" alt="Immagine segnaposto" />
|
|
19
|
+
|
|
20
|
+
<div pgs="flexColumnTexts">
|
|
21
|
+
<h3>Card riutilizzabile</h3>
|
|
22
|
+
<p>Contenuto descrittivo della card, adatto a liste, anteprime e griglie.</p>
|
|
23
|
+
</div>
|
|
24
|
+
</a>
|
|
25
|
+
</article>
|
|
26
|
+
);
|
|
27
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const dropdowns = [
|
|
2
|
+
["Bottom center", "Contenuto bottom center"],
|
|
3
|
+
["Top left", "Contenuto top left", "position[top left]"],
|
|
4
|
+
["Top center", "Contenuto top center", "position[top center]"],
|
|
5
|
+
["Top right", "Contenuto top right", "position[top right]"],
|
|
6
|
+
["Bottom left", "Contenuto bottom left", "position[bottom left]"],
|
|
7
|
+
["Bottom right", "Contenuto bottom right", "position[bottom right]"],
|
|
8
|
+
["Left center", "Contenuto left center", "position[left center]"],
|
|
9
|
+
["Right center", "Contenuto right center", "position[right center]"],
|
|
10
|
+
];
|
|
11
|
+
|
|
12
|
+
export default function Dropdown() {
|
|
13
|
+
return (
|
|
14
|
+
<div pgs="flexRow">
|
|
15
|
+
{dropdowns.map(([label, content, option]) => (
|
|
16
|
+
<span key={label} pgs="dropdown" {...(option ? { "pgs-option": option } : {})}>
|
|
17
|
+
<button pgs="dropdown-button button" pgs-option="buttonReverse" type="button">
|
|
18
|
+
{label}
|
|
19
|
+
<i className="fa-solid fa-chevron-down" aria-hidden="true"></i>
|
|
20
|
+
</button>
|
|
21
|
+
|
|
22
|
+
<div pgs="dropdown-content">
|
|
23
|
+
{content}
|
|
24
|
+
</div>
|
|
25
|
+
</span>
|
|
26
|
+
))}
|
|
27
|
+
</div>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export default function Form() {
|
|
2
|
+
return (
|
|
3
|
+
<form pgs="form" action="#" method="post">
|
|
4
|
+
<label pgs="label" htmlFor="form-name">
|
|
5
|
+
Nome
|
|
6
|
+
</label>
|
|
7
|
+
<input id="form-name" pgs="input" type="text" name="name" placeholder="Mario Rossi" required data-form-field-message="Inserisci il nome" />
|
|
8
|
+
|
|
9
|
+
<label pgs="label" htmlFor="form-email">
|
|
10
|
+
Email
|
|
11
|
+
</label>
|
|
12
|
+
<input id="form-email" pgs="input" type="email" name="email" placeholder="nome@example.com" required data-form-field-message="Inserisci una email valida" />
|
|
13
|
+
|
|
14
|
+
<label pgs="label" htmlFor="form-message">
|
|
15
|
+
Messaggio
|
|
16
|
+
</label>
|
|
17
|
+
<textarea id="form-message" pgs="textarea" name="message" rows="5" placeholder="Scrivi il messaggio"></textarea>
|
|
18
|
+
|
|
19
|
+
<label pgs="toggle">
|
|
20
|
+
<span>Accetto la privacy policy</span>
|
|
21
|
+
<input type="checkbox" name="privacy" required />
|
|
22
|
+
</label>
|
|
23
|
+
|
|
24
|
+
<button pgs="buttonStrong" type="submit">
|
|
25
|
+
<i className="fa-solid fa-paper-plane" aria-hidden="true"></i>
|
|
26
|
+
Invia
|
|
27
|
+
</button>
|
|
28
|
+
</form>
|
|
29
|
+
);
|
|
30
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export default function Logo() {
|
|
2
|
+
return (
|
|
3
|
+
<a aria-label="Logo" pgs="logo logo-darkmode" href="/">
|
|
4
|
+
<img pgs="logo-image" src="https://placehold.co/240x80?text=MyPGS" alt="MyPGS" />
|
|
5
|
+
</a>
|
|
6
|
+
);
|
|
7
|
+
}
|
|
8
|
+
export default function LogoText() {
|
|
9
|
+
return (
|
|
10
|
+
<a aria-label="Logo testuale" pgs="logo" href="/">
|
|
11
|
+
<span pgs="logo-text">MyPGS</span>
|
|
12
|
+
</a>
|
|
13
|
+
);
|
|
14
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const menuItems = (
|
|
2
|
+
<ul>
|
|
3
|
+
<li>
|
|
4
|
+
<a href="/" aria-current="page">
|
|
5
|
+
<i className="fa-solid fa-house" aria-hidden="true"></i>
|
|
6
|
+
<span>Home</span>
|
|
7
|
+
</a>
|
|
8
|
+
</li>
|
|
9
|
+
<li>
|
|
10
|
+
<a href="/servizi">
|
|
11
|
+
<i className="fa-solid fa-layer-group" aria-hidden="true"></i>
|
|
12
|
+
<span>Servizi</span>
|
|
13
|
+
</a>
|
|
14
|
+
<ul>
|
|
15
|
+
<li><a href="/servizi/uno">Servizio uno</a></li>
|
|
16
|
+
<li><a href="/servizi/due">Servizio due</a></li>
|
|
17
|
+
</ul>
|
|
18
|
+
</li>
|
|
19
|
+
</ul>
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export default function MenuHorizontal() {
|
|
23
|
+
return (
|
|
24
|
+
<nav pgs="menu" pgs-option="horizontal" aria-label="Menu orizzontale">
|
|
25
|
+
{menuItems}
|
|
26
|
+
</nav>
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export default function MenuVertical() {
|
|
31
|
+
return (
|
|
32
|
+
|
|
33
|
+
<nav pgs="menu" pgs-option="vertical" aria-label="Menu verticale">
|
|
34
|
+
{menuItems}
|
|
35
|
+
</nav>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
export default function Modal() {
|
|
2
|
+
return (
|
|
3
|
+
<>
|
|
4
|
+
<div pgs="modal" pgs-option="containerID[modal-container]">
|
|
5
|
+
<button pgs="modal-button button" type="button">
|
|
6
|
+
<i className="fa-solid fa-window-maximize"></i> Apri modale
|
|
7
|
+
</button>
|
|
8
|
+
|
|
9
|
+
<dialog>
|
|
10
|
+
<div pgs="modal-dialog-content">
|
|
11
|
+
<div pgs="modal-dialog-content-header">
|
|
12
|
+
<h3>Modale di esempio</h3>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div pgs="modal-dialog-content-scroll">
|
|
16
|
+
<p>Contenuto della modale. Il bottone di chiusura viene aggiunto automaticamente se non presente.</p>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</dialog>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<div pgs="modal" pgs-option="containerID[modal-container]">
|
|
23
|
+
<button pgs="modal-button button" type="button">
|
|
24
|
+
<i className="fa-solid fa-window-maximize"></i> Apri modale right
|
|
25
|
+
</button>
|
|
26
|
+
|
|
27
|
+
<dialog pgs-option="right">
|
|
28
|
+
<div pgs="modal-dialog-content">
|
|
29
|
+
<div pgs="modal-dialog-content-header">
|
|
30
|
+
<h3>Modale laterale</h3>
|
|
31
|
+
</div>
|
|
32
|
+
|
|
33
|
+
<div pgs="modal-dialog-content-scroll">
|
|
34
|
+
<p>Contenuto della modale con <code>pgs-option="right"</code>.</p>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</dialog>
|
|
38
|
+
</div>
|
|
39
|
+
|
|
40
|
+
<div pgs="modal" pgs-option="containerID[modal-container]">
|
|
41
|
+
<button pgs="modal-button button" type="button">
|
|
42
|
+
<i className="fa-solid fa-window-maximize"></i> Apri modale left
|
|
43
|
+
</button>
|
|
44
|
+
|
|
45
|
+
<dialog pgs-option="left">
|
|
46
|
+
<div pgs="modal-dialog-content">
|
|
47
|
+
<div pgs="modal-dialog-content-header">
|
|
48
|
+
<h3>Modale laterale sinistra</h3>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<div pgs="modal-dialog-content-scroll">
|
|
52
|
+
<p>Contenuto della modale con <code>pgs-option="left"</code>.</p>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</dialog>
|
|
56
|
+
</div>
|
|
57
|
+
|
|
58
|
+
<div pgs="modal">
|
|
59
|
+
<button pgs="modal-button button" type="button">
|
|
60
|
+
<i className="fa-solid fa-floppy-disk"></i> Conferma salvataggio
|
|
61
|
+
</button>
|
|
62
|
+
|
|
63
|
+
<dialog pgs-option="topLevel">
|
|
64
|
+
<div pgs="modal-dialog-content">
|
|
65
|
+
<div pgs="modal-dialog-content-header">
|
|
66
|
+
<h3>Salvare le modifiche?</h3>
|
|
67
|
+
</div>
|
|
68
|
+
|
|
69
|
+
<div pgs="modal-dialog-content-scroll flexColumnElements">
|
|
70
|
+
<p>Hai modifiche non salvate. Conferma per applicarle oppure annulla per tornare alla pagina.</p>
|
|
71
|
+
|
|
72
|
+
<div pgs="flexRow">
|
|
73
|
+
<button pgs="button modal-close" type="button">Annulla</button>
|
|
74
|
+
<button pgs="buttonStrong" type="button">Salva modifiche</button>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
</dialog>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<div id="modal-container"></div>
|
|
82
|
+
</>
|
|
83
|
+
);
|
|
84
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const notificationData = {
|
|
2
|
+
title: "Titolo",
|
|
3
|
+
message: "Messaggio",
|
|
4
|
+
element: "notification",
|
|
5
|
+
type: "info",
|
|
6
|
+
icon: null,
|
|
7
|
+
duration: "-1",
|
|
8
|
+
link: null,
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
const toastData = {
|
|
12
|
+
title: "Benvetuto",
|
|
13
|
+
message: "Messaggio",
|
|
14
|
+
element: "toast",
|
|
15
|
+
type: "info",
|
|
16
|
+
icon: null,
|
|
17
|
+
duration: "3000",
|
|
18
|
+
link: null,
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export default function Notification() {
|
|
22
|
+
return (
|
|
23
|
+
<>
|
|
24
|
+
<div pgs="notification" aria-live="polite"></div>
|
|
25
|
+
<div pgs="toast" aria-live="polite"></div>
|
|
26
|
+
|
|
27
|
+
<div pgs="hidden notificationTrigger" data-notification={JSON.stringify(notificationData)}></div>
|
|
28
|
+
<div pgs="hidden notificationTrigger" data-notification={JSON.stringify(toastData)}></div>
|
|
29
|
+
</>
|
|
30
|
+
);
|
|
31
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export default function Searchbar() {
|
|
2
|
+
return (
|
|
3
|
+
<form pgs="buttonNohover searchbar" autoComplete="off" action="" method="get">
|
|
4
|
+
<button type="submit" title="Cerca"><i className="fa-solid fa-search"></i></button>
|
|
5
|
+
<input type="search" name="s" placeholder="Cerca" defaultValue="" />
|
|
6
|
+
</form>
|
|
7
|
+
);
|
|
8
|
+
}
|
|
9
|
+
export default function SearchbarModal() {
|
|
10
|
+
return (
|
|
11
|
+
|
|
12
|
+
<div pgs="modal searchbar-modal" pgs-option="containerPGS[header]">
|
|
13
|
+
<button type="button" pgs="modal-button buttonIcon" title="Cerca">
|
|
14
|
+
<i className="fa-solid fa-search"></i>
|
|
15
|
+
</button>
|
|
16
|
+
|
|
17
|
+
<dialog>
|
|
18
|
+
<div pgs="flexRow section searchbar-mobile">
|
|
19
|
+
<form pgs="buttonNohover searchbar" autoComplete="off" action="/" method="get">
|
|
20
|
+
<button type="submit" title="Cerca">
|
|
21
|
+
<i className="fa-solid fa-search"></i>
|
|
22
|
+
</button>
|
|
23
|
+
|
|
24
|
+
<input type="search" name="s" placeholder="Cerca" defaultValue="" />
|
|
25
|
+
</form>
|
|
26
|
+
|
|
27
|
+
<button type="button" pgs="modal-close buttonIcon">
|
|
28
|
+
<i className="fa-solid fa-close"></i>
|
|
29
|
+
</button>
|
|
30
|
+
</div>
|
|
31
|
+
</dialog>
|
|
32
|
+
</div>
|
|
33
|
+
);
|
|
34
|
+
}
|