Skip to main content

Lifecycle

Stato, boot programmatico e re-mount del CMP a runtime.

Method / PropertyTierSince
init(config?)13.0
reload()13.0
getData()13.0
version (property)13.0
'avacy:ready' (event)13.0

L'inizializzazione del CMP è automatica quando carichi il bundle via <script> tag con #avacy-config e core.autoInit !== false: il bundle legge la config inline, fetcha la config remota se configurata, monta i provider e gli elementi UI.

Per controllo programmatico sul boot (timing custom, SPA, animazioni di ingresso, test) → setta core.autoInit: false nella config inline e chiama window.Avacy.init() quando vuoi.


init

Boot programmatico del CMP. Usato quando #avacy-config porta core.autoInit: false e l'integratore vuole controllare il momento del boot (animazioni, config async, gating SPA, test).

window.Avacy.init(config?: AvacyUserConfig): Promise<void>

Parameters

NameTypeDescription
configAvacyUserConfig (opzionale)Config da fondere sopra l'inline #avacy-config block. Shallow-merged (nested buckets come core, store, ui vengono sovrascritti interi, non merged più in profondità).

Auto-init gating

#avacy-configcore.autoInitComportamento
Assenten/aBundle boota con defaults
Presente!== false (default true)Bundle boota leggendo l'inline config
Presente=== falseBundle non boota — l'integratore deve chiamare init()

Example

<script type="application/json" id="avacy-config">
{ "core": { "autoInit": false }, "publisherCountryCode": "IT", "language": "it",
"frameworks": [{ "tcf": { "cmpId": 297, "frameworkVersion": 2, "vendors": "all" } }] }
</script>
<script src="https://cdn.avacy.com/cmp-web/latest/cmpweb.esm.js" type="module"></script>
<script>
document.addEventListener('hero:animation-done', () => {
window.Avacy.init(); // boot now
});
</script>
// Override programmatico parziale (es. lingua diversa post-fetch):
await window.Avacy.init({ language: 'en' });

⚠️ Caveat: gating dei vendor

Posticipare l'init del CMP significa posticipare il consent gate. I vendor (Google Analytics, Meta Pixel, third-party SDK) che si inizializzano prima che init() abbia risolto non vedono il consenso, leggono lo stub __tcfapi o lo dataLayer vuoto, e possono tracciare in modo non conforme GDPR.

Se l'integrator usa autoInit: false, è sua responsabilità non istanziare vendor prima che init() risolva (o usare avacy:ready come gate per il loro mount).


reload

Distrugge e rimonta tutto il CMP partendo dalla config corrente: reinizializza i provider, rimonta gli elementi UI. Non azzera il consenso salvato (quello resta nello store).

window.Avacy.reload(): Promise<void>

Behavior

  1. Unmount di avacy-shield, avacy-banner, avacy-cpc (qualunque sia montato).
  2. Reset dello stato UI (es. cpcOpen: false).
  3. Reinizializzazione dei provider (store, framework, language).
  4. Re-mount condizionale:
    • se il consenso salvato è ancora valido (post-merge con nuova config) → mount avacy-shield
    • altrimenti → mount avacy-banner

Emette in sequenza: avacy:banner-hidden { reason: 'destroy' }avacy:readyavacy:banner-shown { layer: 'first' }.

Example

// dopo un cambio di policy lato CMS che richiede un nuovo consenso:
await window.Avacy.reload();
// cambio lingua + re-mount per applicare label aggiornate:
await window.Avacy.changeLanguage('en');
await window.Avacy.reload();

When to use it

  • Hot-reload della config dopo che il CMS pubblica una versione nuova della policy
  • Test/preview in cui resetti il consenso programmaticamente e vuoi ri-mostrare il banner
  • Integrazioni SPA che cambiano vista privacy-sensibile

When NOT to use it

La versione corrente di reload() è minimal (destroy + reinit con la config inline). Il refetch della config remota tramite ConfigProvider.refetch() + CoreContext.reinit() è una core touchpoint tracciata fuori da questa preview.


getData

Ritorna uno snapshot read-only dei dati del CMP a un istante: config, consent, language, UI state, customization, glossary.

window.Avacy.getData(): Readonly<CmpData> | null

Ritorna null se il CMP non è ancora inizializzato.

Return shape

type CmpData = ContextData & {
ui: { cpcOpen: boolean };
};

ContextData è il bucket interno del core con core, config, language, consent, customization, glossary, decodedConsent?, acmAddtlConsent?.

→ Vedi CmpData in Tier 2 per i type dettagliati.

Example

const data = window.Avacy.getData();
if (data?.consent.ready && data.consent.valid) {
console.log('saved type:', data.consent.type);
}
console.log('CPC currently open?', data?.ui.cpcOpen ?? false);

See also


version

Stringa con la versione del bundle (semver). Utile per debug e per matrici di compat clienti.

window.Avacy.version: string // e.g. "3.0.0"
console.log('Avacy CMP', window.Avacy.version);

Event: avacy:ready

Emesso una volta, dopo che l'init del CMP ha completato e l'UI è (eventualmente) mountata. Rie-emesso dopo ogni reload().

document.addEventListener('avacy:ready', () => {
console.log('Avacy ready', window.Avacy.version);
});

È sicuro registrare il listener dopo che il bundle ha caricato: i DOM event listener tardivi non perdono l'evento se sono registrati prima dell'effettivo dispatch (e il dispatch avviene a fine boot). Però se hai necessità di setup pre-boot, registra il listener nell'<head> prima del bundle script.