(function () { 'use strict'; /* ========================================================= SETTINGS ========================================================= */ const CLOSE_DELAY = 350; const hoverDevice = window.matchMedia( '(hover: hover) and (pointer: fine)' ); /* ========================================================= GLOBAL STATE ========================================================= */ let portal = null; let activeTrigger = null; let activeSelect = null; let activeParent = null; let closeTimer = null; let isHoveringTrigger = false; let isHoveringPortal = false; /* ========================================================= SAFE EVENT TARGET ========================================================= */ function getEventElement(event) { if (event.target instanceof Element) { return event.target; } if ( event.target && event.target.parentElement instanceof Element ) { return event.target.parentElement; } return null; } /* ========================================================= COOKIE HELPER ========================================================= */ function getCookie(name) { const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { const cookie = cookies[i].trim(); if (cookie.indexOf(name + '=') === 0) { return decodeURIComponent( cookie.substring(name.length + 1) ); } } return null; } /* ========================================================= CREATE ONE GLOBAL PORTAL ========================================================= */ function createPortal() { /* * Remove old portal copies from previous code. */ document .querySelectorAll('.wmc-portal-dropdown') .forEach(function (oldPortal) { oldPortal.remove(); }); portal = document.createElement('div'); portal.className = 'wmc-portal-dropdown'; portal.setAttribute( 'role', 'listbox' ); portal.setAttribute('hidden', ''); portal.setAttribute('inert', ''); portal.style.setProperty( 'display', 'none', 'important' ); portal.style.setProperty( 'visibility', 'hidden', 'important' ); portal.style.setProperty( 'opacity', '0', 'important' ); portal.style.setProperty( 'pointer-events', 'none', 'important' ); portal.style.setProperty( 'z-index', '2147483647', 'important' ); document.body.appendChild(portal); /* * Keep dropdown open on desktop while * cursor is inside the portal. */ portal.addEventListener( 'mouseenter', function () { if (!hoverDevice.matches) { return; } isHoveringPortal = true; cancelHide(); } ); portal.addEventListener( 'mouseleave', function () { if (!hoverDevice.matches) { return; } isHoveringPortal = false; scheduleHide(); } ); } /* ========================================================= PREPARE ONE CURRENCY SELECT ========================================================= */ function prepareCurrencySelect(select) { if (!(select instanceof HTMLSelectElement)) { return; } const container = select.closest('.wmc-currency'); if (!container) { return; } container.classList.add('transformed'); /* * Find existing trigger. * * If Elementor cloned the markup, this trigger * may have no old event listeners. That's fine, * because this new version uses delegated events. */ let trigger = container.querySelector( '.wmc-custom-switcher' ); /* * Create trigger if it does not exist. */ if (!trigger) { trigger = document.createElement('div'); trigger.className = 'wmc-custom-switcher'; trigger.setAttribute( 'role', 'button' ); trigger.setAttribute( 'tabindex', '0' ); trigger.setAttribute( 'aria-haspopup', 'listbox' ); trigger.setAttribute( 'aria-expanded', 'false' ); trigger.innerHTML = `
`; container.appendChild(trigger); } /* * Determine current currency. */ let currentValue = select.value; const savedCurrency = getCookie('wmc_current_currency'); if (savedCurrency) { const validSavedCurrency = Array.from(select.options).some( function (option) { return ( option.value === savedCurrency ); } ); if (validSavedCurrency) { currentValue = savedCurrency; } } const currentOption = Array.from(select.options).find( function (option) { return ( option.value === currentValue ); } ); const label = trigger.querySelector( '.wmc-current-label' ); if (label && currentOption) { label.textContent = currentOption .textContent .trim(); } /* * Debug marker only. * * IMPORTANT: * We do NOT use this anymore to decide * whether mobile clones should initialize. */ select.dataset.wmcPortalInitialized = '1'; } /* ========================================================= PREPARE ALL CURRENCY SELECTS ========================================================= */ function prepareAllCurrencySelects() { document .querySelectorAll( '.wmc-select-currency-js' ) .forEach( prepareCurrencySelect ); } /* ========================================================= GET SELECT FROM TRIGGER ========================================================= */ function getSelectFromTrigger(trigger) { if (!trigger) { return null; } const container = trigger.closest('.wmc-currency'); if (!container) { return null; } return container.querySelector( '.wmc-select-currency-js' ); } /* ========================================================= BUILD PORTAL OPTIONS ========================================================= */ function buildPortal(select) { if (!portal || !select) { return; } portal.innerHTML = ''; let currentValue = select.value; const savedCurrency = getCookie('wmc_current_currency'); if ( savedCurrency && Array.from(select.options).some( function (option) { return ( option.value === savedCurrency ); } ) ) { currentValue = savedCurrency; } Array.from(select.options).forEach( function (option) { const item = document.createElement('a'); item.href = '#'; item.className = 'wmc-currency-option'; item.dataset.currency = option.value; item.setAttribute( 'role', 'option' ); if ( option.value === currentValue ) { item.classList.add( 'is-current' ); item.setAttribute( 'aria-selected', 'true' ); } else { item.setAttribute( 'aria-selected', 'false' ); } const name = document.createElement('span'); name.className = 'wmc-currency-name'; name.textContent = option.textContent.trim(); item.appendChild(name); portal.appendChild(item); } ); } /* ========================================================= POSITION PORTAL ========================================================= */ function updatePosition() { if ( !portal || !activeTrigger || !document.body.contains(activeTrigger) ) { return; } const rect = activeTrigger.getBoundingClientRect(); if ( rect.width <= 0 || rect.height window.innerWidth - 5 ) { left = Math.max( 5, window.innerWidth - width - 5 ); } portal.style.setProperty( 'position', 'fixed', 'important' ); portal.style.setProperty( 'top', (rect.bottom - 1) + 'px', 'important' ); portal.style.setProperty( 'left', left + 'px', 'important' ); portal.style.setProperty( 'width', width + 'px', 'important' ); portal.style.setProperty( 'min-width', width + 'px', 'important' ); portal.style.setProperty( 'max-width', width + 'px', 'important' ); portal.style.setProperty( 'z-index', '2147483647', 'important' ); } /* ========================================================= TIMER HELPERS ========================================================= */ function cancelHide() { if (closeTimer !== null) { clearTimeout(closeTimer); closeTimer = null; } } function scheduleHide() { cancelHide(); closeTimer = setTimeout( function () { if ( !isHoveringTrigger && !isHoveringPortal ) { closePortal(); } }, CLOSE_DELAY ); } /* ========================================================= OPEN PORTAL ========================================================= */ function openPortal(trigger) { if (!trigger || !portal) { return; } const select = getSelectFromTrigger(trigger); if (!select) { return; } /* * Close visual state of previous trigger. */ if ( activeTrigger && activeTrigger !== trigger ) { activeTrigger.classList.remove( 'is-open' ); activeTrigger.setAttribute( 'aria-expanded', 'false' ); const previousParent = activeTrigger.closest( '.currency-parent-trigger' ); if (previousParent) { previousParent.classList.remove( 'currency-dropdown-open' ); } } activeTrigger = trigger; activeSelect = select; activeParent = trigger.closest( '.currency-parent-trigger' ); cancelHide(); buildPortal(select); updatePosition(); portal.classList.add( 'active' ); trigger.classList.add( 'is-open' ); if (activeParent) { activeParent.classList.add( 'currency-dropdown-open' ); } trigger.setAttribute( 'aria-expanded', 'true' ); /* * Remove accessibility hiding. */ portal.removeAttribute( 'hidden' ); portal.removeAttribute( 'inert' ); /* * FORCE VISIBLE. * * This intentionally overrides conflicting * Elementor/mobile CSS. */ portal.style.setProperty( 'display', 'block', 'important' ); portal.style.setProperty( 'visibility', 'visible', 'important' ); portal.style.setProperty( 'opacity', '1', 'important' ); portal.style.setProperty( 'pointer-events', 'auto', 'important' ); portal.style.setProperty( 'z-index', '2147483647', 'important' ); } /* ========================================================= CLOSE PORTAL ========================================================= */ function closePortal() { cancelHide(); if (portal) { portal.classList.remove( 'active' ); portal.style.setProperty( 'display', 'none', 'important' ); portal.style.setProperty( 'visibility', 'hidden', 'important' ); portal.style.setProperty( 'opacity', '0', 'important' ); portal.style.setProperty( 'pointer-events', 'none', 'important' ); portal.setAttribute( 'hidden', '' ); portal.setAttribute( 'inert', '' ); } if (activeTrigger) { activeTrigger.classList.remove( 'is-open' ); activeTrigger.setAttribute( 'aria-expanded', 'false' ); } if (activeParent) { activeParent.classList.remove( 'currency-dropdown-open' ); } activeTrigger = null; activeSelect = null; activeParent = null; isHoveringTrigger = false; isHoveringPortal = false; } /* ========================================================= SELECT CURRENCY ========================================================= */ function selectCurrency(item) { if ( !item || !activeSelect ) { return; } const value = item.dataset.currency; if (!value) { return; } /* * Preserve references BEFORE closing. */ const select = activeSelect; const trigger = activeTrigger; const selectedOption = Array.from(select.options).find( function (option) { return ( option.value === value ); } ); if (!selectedOption) { return; } /* * Update original select. */ select.value = value; /* * Update visible label. */ if (trigger) { const label = trigger.querySelector( '.wmc-current-label' ); if (label) { label.textContent = selectedOption .textContent .trim(); } } /* * Save selected currency. */ document.cookie = 'wmc_current_currency=' + encodeURIComponent(value) + '; path=/; SameSite=Lax'; /* * Close first. */ closePortal(); /* * Trigger WooCommerce Multi Currency plugin. */ select.dispatchEvent( new Event( 'change', { bubbles: true } ) ); /* * jQuery compatibility. */ if (window.jQuery) { window.jQuery(select).trigger( 'change' ); } } /* ========================================================= DELEGATED CLICK DESKTOP + MOBILE + ELEMENTOR CLONES ========================================================= */ document.addEventListener( 'click', function (event) { const target = getEventElement(event); if (!target) { return; } /* * ----------------------------------------- * CURRENCY OPTION CLICK * ----------------------------------------- */ const currencyOption = target.closest( '.wmc-currency-option' ); if ( currencyOption && portal && portal.contains( currencyOption ) ) { event.preventDefault(); event.stopPropagation(); selectCurrency( currencyOption ); return; } /* * ----------------------------------------- * CURRENCY TRIGGER CLICK * ----------------------------------------- */ let trigger = target.closest( '.wmc-custom-switcher' ); /* * Also allow clicking/tapping the Elementor * currency parent/icon area. */ if (!trigger) { const parent = target.closest( '.currency-parent-trigger' ); if (parent) { trigger = parent.querySelector( '.wmc-custom-switcher' ); } } if (trigger) { event.preventDefault(); event.stopPropagation(); /* * Desktop: * hover normally handles opening, * but clicking keeps it open. */ if (hoverDevice.matches) { openPortal(trigger); return; } /* * Mobile / touch: * tap toggles dropdown. */ if ( activeTrigger === trigger && portal && portal.classList.contains( 'active' ) ) { closePortal(); } else { openPortal(trigger); } return; } /* * ----------------------------------------- * OUTSIDE CLICK * ----------------------------------------- */ if ( portal && !portal.contains(target) ) { closePortal(); } }, true ); /* ========================================================= DESKTOP DELEGATED HOVER ========================================================= */ document.addEventListener( 'mouseover', function (event) { if (!hoverDevice.matches) { return; } const target = getEventElement(event); if (!target) { return; } let hoverArea = target.closest( '.currency-parent-trigger' ); let trigger = null; if (hoverArea) { trigger = hoverArea.querySelector( '.wmc-custom-switcher' ); } else { trigger = target.closest( '.wmc-custom-switcher' ); hoverArea = trigger; } if (!trigger || !hoverArea) { return; } /* * Ignore movement between children * inside the same trigger. */ if ( event.relatedTarget instanceof Node && hoverArea.contains( event.relatedTarget ) ) { return; } isHoveringTrigger = true; cancelHide(); openPortal(trigger); }, true ); document.addEventListener( 'mouseout', function (event) { if (!hoverDevice.matches) { return; } const target = getEventElement(event); if (!target) { return; } let hoverArea = target.closest( '.currency-parent-trigger' ); let trigger = null; if (hoverArea) { trigger = hoverArea.querySelector( '.wmc-custom-switcher' ); } else { trigger = target.closest( '.wmc-custom-switcher' ); hoverArea = trigger; } if (!trigger || !hoverArea) { return; } /* * Ignore movement between children * inside same area. */ if ( event.relatedTarget instanceof Node && hoverArea.contains( event.relatedTarget ) ) { return; } isHoveringTrigger = false; scheduleHide(); }, true ); /* ========================================================= KEYBOARD SUPPORT ========================================================= */ document.addEventListener( 'keydown', function (event) { /* * Escape always closes. */ if (event.key === 'Escape') { closePortal(); return; } if ( event.key !== 'Enter' && event.key !== ' ' ) { return; } const target = getEventElement(event); if (!target) { return; } const trigger = target.closest( '.wmc-custom-switcher' ); if (!trigger) { return; } event.preventDefault(); if ( activeTrigger === trigger && portal && portal.classList.contains( 'active' ) ) { closePortal(); } else { openPortal(trigger); } } ); /* ========================================================= UPDATE POSITION ON SCROLL ========================================================= */ window.addEventListener( 'scroll', function () { if ( portal && portal.classList.contains( 'active' ) ) { updatePosition(); } }, { passive: true, capture: true } ); /* ========================================================= UPDATE POSITION ON RESIZE ========================================================= */ window.addEventListener( 'resize', function () { if ( portal && portal.classList.contains( 'active' ) ) { updatePosition(); } } ); /* ========================================================= ELEMENTOR / AJAX / OFF-CANVAS SUPPORT ========================================================= */ let mutationTimer = null; const observer = new MutationObserver( function (mutations) { let needsCheck = false; for ( let i = 0; i < mutations.length; i++ ) { if ( mutations[i].addedNodes && mutations[i].addedNodes.length ) { needsCheck = true; break; } } if (!needsCheck) { return; } if (mutationTimer) { clearTimeout( mutationTimer ); } mutationTimer = setTimeout( function () { prepareAllCurrencySelects(); }, 100 ); } ); /* ========================================================= START ========================================================= */ function start() { createPortal(); prepareAllCurrencySelects(); observer.observe( document.documentElement, { childList: true, subtree: true } ); } if ( document.readyState === 'loading' ) { document.addEventListener( 'DOMContentLoaded', start ); } else { start(); } })();

KONTO

[fk_cart_menu]

WARENKORB

document.addEventListener('DOMContentLoaded', function () { const container = document.querySelector( '.language-parent-trigger' ); if (!container) { return; } const list = container.querySelector( '.trp-switcher-dropdown-list' ); const overlay = container.querySelector( '.trp-shortcode-overlay' ); const arrow = container.querySelector( '.trp-shortcode-arrow' ); function show() { if (list) { list.style.display = 'block'; list.style.visibility = 'visible'; list.style.opacity = '1'; list.style.pointerEvents = 'auto'; list.removeAttribute('hidden'); list.removeAttribute('inert'); } if (overlay) { overlay.classList.add( 'trp-is-open', 'is-open' ); } if (arrow) { arrow.style.transform = 'rotate(180deg)'; } } function hide() { if (list) { list.style.display = 'none'; list.setAttribute('hidden', ''); list.setAttribute('inert', ''); } if (overlay) { overlay.classList.remove( 'trp-is-open', 'is-open' ); } if (arrow) { arrow.style.transform = 'rotate(0deg)'; } } container.addEventListener('mouseenter', show); container.addEventListener('mouseleave', hide); });
(function () { function init() { const cartDrawer = document.querySelector('.open-cart-drawer'); const cartToggleBtn = document.querySelector('#elementor-menu-cart__toggle_button'); if (!cartDrawer || !cartToggleBtn) { setTimeout(init, 300); return; } cartDrawer.addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); const clickEvent = new MouseEvent('click', { bubbles: true, cancelable: true, view: window }); cartToggleBtn.dispatchEvent(clickEvent); }); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } })();
[fk_cart_menu]
document.addEventListener('DOMContentLoaded', function(){ document.querySelectorAll('.custom-cart-hover').forEach(function(container){ container.addEventListener('click', function(){ const toggler = container.querySelector('.fkcart-mini-toggler'); if(toggler){ toggler.click(); // plugin ka original toggle fire kare } }); }); });
Microsoft Office Home & Business 2021

Microsoft Office Home & Business 2021

CHF 159.00 CHF 195.00Fascia di prezzo: da CHF 159.00 a CHF 195.00
Artikel-Nr.: MS0003MAC
Hersteller-Nr:
Laufzeit:
Sprache(n):
Garantie:
Länderzone(n):

Microsoft Office 2021 Home & Business è un insieme dei più popolari strumenti per l'ufficio utilizzati quotidianamente nelle aziende. Cosa guadagnerai scegliendo questo pacchetto per la tua azienda? Il valore più grande è il tempo, poiché l'esecuzione delle attività quotidiane sarà ora molto meglio ottimizzata, aumentando il tuo comfort di lavoro. E oltre a ciò...

Spedizione: In 5 minuti via email

Licenza: Licenza permanente per 1 utente

Versione linguistica: Tutte le lingue

Riceverete comodamente questo prodotto all'indirizzo email fornito. La spedizione via email includerà la chiave del prodotto, un link per il download e una fattura conforme all'IVA. Vendiamo esclusivamente prodotti originali e offriamo una garanzia di 2 anni. Saremo lieti di assistervi anche nell'installazione. Per domande riguardanti uno sconto quantità a partire da 5 pezzi, vi preghiamo di contattarci tramite questo. Formular.

Microsoft Office Home & Business 2021: la suite di produttività completa

Microsoft Office Home & Business 2021 offre una raccolta robusta di strumenti progettati per aumentare la tua produttività e razionalizzare le tue attività quotidiane. Con una licenza perpetua, gli utenti beneficiano di un accesso illimitato alle applicazioni classiche come Word, Excel, PowerPoint, Outlook e OneNote. Questa suite è ideale per un uso personale e aziendale, offrendo una soluzione versatile per creare documenti, fogli di calcolo, presentazioni e gestire le email in modo professionale.

Caratteristiche chiave e miglioramenti

La versione 2021 introduce numerose nuove funzionalità e miglioramenti. Un elegante tema scuro è ora disponibile per ridurre l'affaticamento degli occhi durante un uso prolungato. Excel include array dinamici e XLOOKUP per un'analisi dei dati più avanzata, mentre PowerPoint offre la registrazione di presentazioni e una vasta libreria di modelli. Word beneficia di strumenti di disegno migliorati, facilitando così la creazione di documenti visivamente accattivanti. Inoltre, la suite supporta la collaborazione in tempo reale, consentendo agli utenti di lavorare simultaneamente su documenti.

Accessibilità e compatibilità

Microsoft Office Home & Business 2021 attribuisce grande importanza all'accessibilità con funzionalità come il lettore immersivo in Word, che facilita la comprensione della lettura. La suite supporta anche vari formati di file, incluso il formato Open Document (ODF), garantendo una compatibilità trasparente con altri software. OneNote, in quanto applicazione cloud, offre uno spazio centralizzato per prendere appunti e organizzare.

Perché scegliere Office 2021?

Sebbene esistano molte suite di produttività, Microsoft Office rimane una scelta popolare grazie alle sue funzionalità estese, alla facilità d'uso e alla sua diffusa adozione nel settore. Con Office 2021, gli utenti possono aspettarsi un'interfaccia familiare associata a potenti nuovi strumenti. Sia che tu sia uno studente, un professionista o un proprietario di una piccola impresa, questa suite offre la versatilità e l'affidabilità necessarie per svolgere un'ampia varietà di compiti.

Puoi trovare maggiori informazioni su questo prodotto qui.

Microsoft Office Home & Business 2021 – requisiti di sistema

  • Sistema operativoDa Windows 10 e 11 / Mac - le ultime tre versioni di macOS
  • Processore Windows 11 o Windows 10 con 1,6 GHz, processore a 2 core/macOS più recente
  • RAM 4 GB (64 bit), 2 GB (32 bit) di RAM per PC; 4 GB di RAM per Mac
  • Spazio su disco4 GB di spazio disponibile su disco per PC, 10 GB per Mac
  • Risoluzione dello schermo Risoluzione: 1024×768 per PC, 1280×800 per Mac

Informazioni aggiuntive

Variante

Windows & Mac, Mac

[ffw_template dynamic_post=true]

Kundenbewertungen

FAQs

[ffw_template dynamic_post=true]
Scegli la tua valuta