Notifiche
Per attirare l’attenzione su brevi messaggi di stato.
Le notifiche vengono utilizzate per portare l’attenzione dell’utente su un messaggio o un cambiamento di stato. Es: la ricezione di una nuova email.
Lo stato naturale dell’elemento è invisibile. Gli esempi di questa pagina sono stati resi statici per facilitare un confronto fra le varie tipologie.
Il comportamento delle notifiche è verificabile sulla pagina di esempio.
Accessibilità
Negli esempi è stato utilizzato il tag h2
per il titolo delle notifiche.
Utilizzare il tag h
corretto a seconda del contesto.
Per ragioni di accessibilità è necessario:
- che il titolo
<h...>
contenuto nella notifica abbia un ID univoco - che questo ID venga usato come valore della proprietà
aria-labelledby
nel<div>
della notifica - che il
<div>
della notifica abbia la proprietàrole="alert"
Esempio
La notifica può essere composta da un solo titolo oppure da un titolo accompagnato da icona, contenuta nel tag <h5>
del titolo. In questo caso l’elemento dovrà avere la classe .with-icon
.
Notification standard
Titolo notifica
Notification con icona
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div class="container test-docs">
<div class="row">
<div class="col-12 col-md-6 mb-4 mb-md-0">
<p class="mb-4"><strong>Notification standard</strong></p>
<div class="notification" role="alert" aria-labelledby="not1-title" id="not1">
<h3 id="not1-title" class="h5 ">Titolo notifica</h3>
</div>
</div>
<div class="col-12 col-md-6">
<p class="mb-4"><strong>Notification con icona</strong></p>
<div class="notification with-icon" role="alert" aria-labelledby="not2-title" id="not2">
<h2 id="not2-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Titolo notifica</h2>
</div>
</div>
</div>
</div>
Notifica con messaggio
Si può aggiungere un breve testo al di sotto del titolo utilizzando un tag <p>
.
Notifica standard con testo
Titolo notifica
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor…
Notifica con icona e testo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div class="container test-docs">
<div class="row">
<div class="col-12 col-md-6 mb-4 mb-md-0">
<p class="mb-4"><strong>Notifica standard con testo</strong></p>
<div class="notification" role="alert" aria-labelledby="not1a-title" id="not1a">
<h2 id="not1a-title" class="h5 ">Titolo notifica</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor…</p>
</div>
</div>
<div class="col-12 col-md-6">
<p class="mb-4"><strong>Notifica con icona e testo</strong></p>
<div class="notification with-icon success" role="alert" aria-labelledby="not2a-title" id="not2a">
<h2 id="not2a-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Titolo notifica</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor…</p>
</div>
</div>
</div>
</div>
Eliminabili
Le notifiche eliminabili non vengono nascoste dopo un intervallo di tempo ma vengono chiuse solo quando si clicca sul rispettivo pulsante di chiusura.
Utilizzare una classe aggiuntiva .dismissable
per ottenere questo comportamento.
Notifica eliminabile con testo
Titolo notifica
Notifica eliminabile con icona e testo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<div class="container test-docs">
<div class="row">
<div class="col-12 col-md-6 mb-4 mb-md-0">
<p class="mb-4"><strong>Notifica eliminabile con testo</strong></p>
<div class="notification dismissable" role="alert" aria-labelledby="not1dms-title" id="not1dms">
<h2 id="not1dms-title" class="h5 ">Titolo notifica</h2>
<button type="button" class="btn notification-close">
<svg class="icon"><use href="/dist/svg/sprites.svg#it-close"></use></svg>
<span class="visually-hidden">Chiudi notifica: Titolo notifica</span>
</button>
</div>
</div>
<div class="col-12 col-md-6">
<p class="mb-4"><strong>Notifica eliminabile con icona e testo</strong></p>
<div class="notification with-icon success dismissable" role="alert" aria-labelledby="not2dms-title" id="not2dms">
<h2 id="not2dms-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Titolo notifica</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor…</p>
<button type="button" class="btn notification-close">
<svg class="icon"><use href="/dist/svg/sprites.svg#it-close"></use></svg>
<span class="visually-hidden">Chiudi notifica: Titolo notifica</span>
</button>
</div>
</div>
</div>
</div>
Stati
Alle notifiche possono essere applicate classi aggiuntive che ne determinano lo stato modificando il colore delle icone e del bordo:
.success
- per messaggi di procedure andate a buon fine.error
- per messaggi di errore.info
- per info generiche.warning
- per messaggi di precauzione
Successo
Errore
Info
Precauzione
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<div class="container test-docs">
<div class="row mb-5">
<div class="col-12 col-md-6 mb-4 mb-md-0">
<p><strong>Successo</strong></p>
<div class="notification with-icon success" role="alert" aria-labelledby="not1b-title" id="not1b">
<h2 id="not1b-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Titolo notifica</h2>
</div>
</div>
<div class="col-12 col-md-6">
<p><strong>Errore</strong></p>
<div class="notification with-icon error" role="alert" aria-labelledby="not2b-title" id="not2b">
<h2 id="not2b-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-close-circle"></use></svg>Titolo notifica</h2>
</div>
</div>
</div>
<div class="row">
<div class="col-12 col-md-6 mb-4 mb-md-0">
<p><strong>Info</strong></p>
<div class="notification with-icon info" role="alert" aria-labelledby="not3b-title" id="not3b">
<h2 id="not3btitle" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-info-circle"></use></svg>Titolo notifica</h2>
</div>
</div>
<div class="col-12 col-md-6">
<p><strong>Precauzione</strong></p>
<div class="notification with-icon warning" role="alert" aria-labelledby="not4b-title" id="not4b">
<h2 id="not4b-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-error"></use></svg>Titolo notifica</h2>
</div>
</div>
</div>
</div>
Posizione e arrotondamento degli angoli
La posizione predefinita delle notifiche è nella parte destra inferiore della finestra.
Utilizzando le classi aggiuntive di posizione fissa elencate di seguito la notifica verrà posizionata a filo di uno dei margini indicati, modificando l’arrotondamento degli angoli di conseguenza.
N.B. queste classi non influenzano il posizionamento su device mobile, in questo caso la Notification è sempre a piede della finestra e ne occupa tutta la larghezza
Basico (arrotondamento ai 4 angoli)
top-fix
bottom-fix
left-fix
right-fix
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<div class="container test-docs">
<div class="row mb-5">
<div class="col-12 col-md-6 mb-4 mb-md-0">
<p><strong>Basico (arrotondamento ai 4 angoli)</strong></p>
<div class="notification with-icon success" role="alert" aria-labelledby="not1c-title" id="not1c">
<h2 id="not1c-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Titolo notifica</h2>
</div>
</div>
<div class="col-12 col-md-6">
<p><strong>top-fix</strong></p>
<div class="notification top-fix with-icon success" role="alert" aria-labelledby="not2c-title" id="not2c">
<h2 id="not2c-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Titolo notifica</h2>
</div>
<p class="mt-4"><strong>bottom-fix</strong></p>
<div class="notification bottom-fix with-icon success" role="alert" aria-labelledby="not3c-title" id="not3c">
<h2 id="not3c-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Titolo notifica</h2>
</div>
<p class="mt-4"><strong>left-fix</strong></p>
<div class="notification left-fix with-icon success" role="alert" aria-labelledby="not4c-title" id="not4c">
<h2 id="not4c-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Titolo notifica</h2>
</div>
<p class="mt-4"><strong>right-fix</strong></p>
<div class="notification right-fix with-icon success" role="alert" aria-labelledby="not5c-title" id="not5c">
<h2 id="not5c-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Titolo notifica</h2>
</div>
</div>
</div>
</div>
Posizione predefinita
Posizionamento predefinito della notifica.
1
2
3
4
5
6
<div class="container test-desktop">
<div class="notification with-icon success" role="alert" aria-labelledby="not1d-title" id="not1d">
<h2 id="not1d-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Titolo notifica</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor…</p>
</div>
</div>
Posizione fissa
Esempi delle quattro posizioni fisse possibili.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<div class="container test-desktop">
<div class="notification top-fix with-icon success" role="alert" aria-labelledby="not1e-title" id="not1e">
<h2 id="not1e-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Top fix</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor…</p>
</div>
<div class="notification bottom-fix with-icon success" role="alert" aria-labelledby="not2e-title" id="not2e">
<h2 id="not2e-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Bottom fix</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor…</p>
</div>
<div class="notification left-fix with-icon success" role="alert" aria-labelledby="not3e-title" id="not3e">
<h2 id="not3e-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Left fix</h2>
</div>
<div class="notification right-fix with-icon success" role="alert" aria-labelledby="not4e-title" id="not4e">
<h2 id="not4e-title" class="h5 "><svg class="icon"><use href="/dist/svg/sprites.svg#it-check-circle"></use></svg>Right fix</h2>
</div>
</div>
Implementazione
Il plugin per le notifiche attiva/disattiva il suo contenuto nascosto su richiesta, tramite attributi data o tramite JavaScript.
Tramite data attributes
Attiva una notifica senza scrivere codice JavaScript. Imposta data-bs-toggle="notification"
su un elemento di controllo, come un
pulsante, insieme a data-bs-target="#foo"
o href="#foo"
per attivare/disattivare una specifica notifica.
È possibile specificare il tempo di permanenza della notifica mediante l’attributo data-bs-timeout
: il suo valore rappresenta i millisecondi nei quali la notifica resterà visibile.
1
<button type="button" data-bs-toggle="notification" data-bs-target="#myNotification" data-bs-timeout="5000">Lancia la notifica</button>
L’attributo data-bs-timeout
può essere assegnato anche direttamente al componente notifica. In tal caso non sarà necessario assegnarlo anche al pulsante di avvio. Se l’attributo è specificato anche nel pulsante di avvio, verrà preso come tempo di permanenza della notifica il valore di quest’ultimo.
1
2
3
<div class="notification fade" data-bs-timeout="7000" role="alert" id="myNotification" aria-labelledby="not0-title">
<h5 id="not0-title">Notification</h5>
</div>
Tramite JavaScript
Richiama una notifica con id myNotification
con una singola riga di JavaScript:
1
const myNotification = new bootstrap.Notification(document.getElementById('myNotification'), options)
Metodi
Metodi asincroni e transizioni
Tutti i metodi API sono asincroni e avviano una transizione. Ritornano al chiamante non appena viene avviata la transizione ma prima che termini. Inoltre, una chiamata al metodo su un componente in transizione verrà ignorata.
Per maggiori informazioni consulta la documentazione Javascript di Bootstrap (in inglese).
Utilizzo delle opzioni
Durante la creazione di un’istanza Notification è possibile passare un oggetto per la configurazione (opzionale).
1
2
3
const myNotification = new bootstrap.Notification(document.getElementById('myNotification'), {
timeout: 2000,
})
nome | descrizione |
---|---|
timeout | durata di permanenza della notifica in millisecondi. Sostituisce l'attributo data-bs-timeout. |
show
Mostra manualmente una notifica.
1
myNotification.show()
È possibile passare come parametro il valore in millisecondi di permanenza della notifica. Se non viene specificato, il tempo di permanenza della notifica verrà ricavato dal parametro di configurazione timeout
o dal data attribute data-bs-timeout
.
1
myNotification.show(2000) //la notifica verrà visualizzata per 2 secondi, ignorando il parametro di configurazione
hide
Nasconde manualmente una notifica.
1
myNotification.hide()
toggle
Mostra/Nasconde manualmente una notifica.
1
myNotification.toggle()