Skip to content

Commit 7757fff

Browse files
altre correzioni
1 parent 661da22 commit 7757fff

File tree

1 file changed

+30
-30
lines changed

1 file changed

+30
-30
lines changed

8-web-components/5-slots-composition/article.md

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -101,19 +101,19 @@ Il risultato viene detto "flattened" DOM:
101101
</user-card>
102102
```
103103

104-
...Ma il flattened DOM esiste poer scopi puramente di rendering e di gestione degli eventi. È come se fosse "virtuale". Le cose vengono mostrate così. Ma i nodi nel documento non vengono spostati!
104+
...Tuttavia, il flattened DOM esiste puramente per scopi di rendering e gestione degli eventi. È come se fosse "virtuale". Le cose vengono mostrate così come le vediamo, ma i nodi nel documento non vengono spostati!
105105

106-
Ciò può essere facilmente verificato se andiamo ad eseguire `querySelectorAll`: i nodi saranno al proprio posto.
106+
Ciò può essere facilmente verificato se eseguiamo`querySelectorAll`: i nodi saranno rimasti al proprio posto.
107107

108108
```js
109-
// gli nodi degli <span> del light DOM sono ancora nella stessa posizione, dentro `<user-card>`
109+
// i nodi degli <span> del light DOM sono ancora nella stessa posizione, quindi dentro `<user-card>`
110110
alert( document.querySelectorAll('user-card span').length ); // 2
111111
```
112112

113-
Quindi, il flattened DOM deriva dallo shadow DOM andando ad inserire gli slots. Il browser ne effettua il rendering e li usa per ereditare gli stili e per la propagazione degli eventi (vedremo questi aspetti più avanti). Ma JavaScript vede ancora il documento "per quello che è", cioè come era prima del flattening.
113+
Quindi, il flattened DOM deriva dallo shadow DOM con l'inserimento degli slots. Il browser ne effettua il rendering e li usa per ereditare gli stili e la propagazione degli eventi (vedremo questi aspetti più avanti). Ciononostante JavaScript vede ancora il documento "per quello che è", cioè come era prima del processo di flattening.
114114

115115
````warn header="Solo i figli top-level possono avere l'attributo slot=\"...\" "
116-
L'attrbibuto `slot="..."` è valido solamente per i figli diretti dello shadow host (nel nostro esempio, l'elemento `<user-card>`). Per gli elementi annidati vengono ignorati.
116+
L'attributo `slot="..."` è valido solamente per i figli diretti dello shadow host (nel nostro esempio, l'elemento `<user-card>`), gli elementi annidati, invece, vengono ignorati.
117117
118118
Ad esempio, qui il secondo `<span>` viene ignorato (dal momento che non è un figlio top-level di `<user-card>`):
119119
```html
@@ -127,17 +127,17 @@ Ad esempio, qui il secondo `<span>` viene ignorato (dal momento che non è un fi
127127
```
128128
````
129129

130-
Se ci sono più elementi nel light DOM con lo stesso slot name, vengono inseriti nello slot, uno dopo l'altro, in successione.
130+
Se ci sono più elementi nel light DOM con lo stesso slot name, questi vengono inseriti nello slot, uno dopo l'altro in successione.
131131

132-
Per esempio, qui abbiamo:
132+
Per esempio, qui:
133133
```html
134134
<user-card>
135135
<span slot="username">John</span>
136136
<span slot="username">Smith</span>
137137
</user-card>
138138
```
139139

140-
Restituisce questo flattened DOM con due elementi dentro `<slot name="username">`:
140+
Restituisce il flattened DOM con due elementi dentro `<slot name="username">`:
141141

142142
```html
143143
<user-card>
@@ -156,7 +156,7 @@ Restituisce questo flattened DOM con due elementi dentro `<slot name="username">
156156

157157
## Slot fallback content
158158

159-
Se inseriamo qualcosa dentro uno `<slot>`, quest'ultimo rappresenterà il contenuto di ripiego, cioè quello "predefinito". Nel caso in cui non vi fossero contenuti corrispondenti nel light DOM, sarà questo il contenuto mostrato dal browser.
159+
Se inseriamo qualcosa dentro l'elemento `<slot>`, rappresenterà il contenuto di ripiego, cioè quello "predefinito". Quindi, nel caso in cui non vi fossero contenuti corrispondenti nel light DOM, sarà questo il contenuto che verrà visualizzato dal browser.
160160

161161
Per esempio, in questo pezzo di shadow DOM, verrà visualizzato `Anonymous` se non ci sono `slot="username"` nel light DOM.
162162

@@ -168,7 +168,7 @@ Per esempio, in questo pezzo di shadow DOM, verrà visualizzato `Anonymous` se n
168168

169169
## Slot "default": il primo senza nome
170170

171-
Il primo `<slot>` dello shadow DOM privo di nome è uno slot "default". Esso riceve tutti i nodi dal light DOM che non sono stati slottati da nessuna parte.
171+
Il primo `<slot>` dello shadow DOM privo di nome è uno slot "default". Esso riceve al suo interno tutti i nodi dal light DOM che non sono stati slottati da nessuna parte.
172172

173173
Per esempio, aggiungiamo lo slot default al nostro `<user-card>` che mostrerà tutte le informazioni non slottate dell'utente:
174174

@@ -207,9 +207,9 @@ customElements.define('user-card', class extends HTMLElement {
207207
</user-card>
208208
```
209209

210-
Tutti i contenuti del light DOM non slottati andranno a finire dentro il fieldset "Other information".
210+
Tutti i contenuti del light DOM unslotted andranno a finire dentro il fieldset "Other information".
211211

212-
Glie elementi vengono accodati su uno slot, uno dopo l'altro, quindi anche i pezzi di informazione non slottare vanno a finire dentro lo slot default tutti insieme.
212+
Gli elementi vengono accodati su uno slot, uno dopo l'altro, quindi anche i pezzi di informazione unslotted vanno a finire dentro lo slot default, tutti insieme.
213213

214214
Il flattened DOM apparirà come questo:
215215

@@ -255,7 +255,7 @@ Ecco il markup per il `<custom-menu>`:
255255
</custom-menu>
256256
```
257257

258-
Invece il template dello shadow DOM con gli slot appropriati:
258+
Questo è invece il template dello shadow DOM con gli slot appropriati:
259259

260260
```html
261261
<template id="tmpl">
@@ -267,8 +267,8 @@ Invece il template dello shadow DOM con gli slot appropriati:
267267
</template>
268268
```
269269

270-
1. `<span slot="title">` andrà a finire dentro `<slot name="title">`.
271-
2. Ci sono tanti `<li slot="item">`, ma solo uno `<slot name="item">` nel template. Quindi tutti questi `<li slot="item">` verranno inseriti dentro `<slot name="item">` uno dopo l'altro, così da formare la lista.
270+
1. `<span slot="title">` verrà inserito dentro `<slot name="title">`.
271+
2. Ci sono tanti `<li slot="item">`, ma solo uno `<slot name="item">` nel template. Di conseguenza tutti gli elementi `<li slot="item">` verranno inseriti dentro `<slot name="item">` uno dopo l'altro, così da formare la lista.
272272

273273
Il flattened DOM diventa:
274274

@@ -291,9 +291,9 @@ Il flattened DOM diventa:
291291
</custom-menu>
292292
```
293293

294-
Qualcuno potrebbe fare notare che, in un DOM valido, un `<li>` dovrebbe essere figlio diretto di `<ul>`. Ma questo è un flattened DOM, che descrive come il componente verrà renderizzato, quindi è perfettamente regolare.
294+
Qualcuno potrebbe notare che, in un DOM valido, un `<li>` dovrebbe essere figlio diretto di `<ul>`. Tuttavia questo è un flattened DOM, che descrive la maniera nella qualre il componente verrà renderizzato, quindi è perfettamente lecito e regolare.
295295

296-
Dobbiamo solo aggiungere un gestire al `click` per aprire e chiudere la lista, ed il `<custom-menu>` sarà pronto:
296+
Dobbiamo solo aggiungere una gestione per il `click`, per poter aprire e chiudere la lista, ed il `<custom-menu>` sarà pronto:
297297

298298
```js
299299
customElements.define('custom-menu', class extends HTMLElement {
@@ -322,11 +322,11 @@ Certamente possiamo andare ad aggiungere più funzionalità: eventi metodi e via
322322

323323
E se volessimo aggiungere e rimuovere elementi del menù dinamicamente?
324324

325-
**Il browser monitora gli slots e aggiorna la visualizzazione all'inserimento o rimozione di elementi slottati.**
325+
**Il browser monitora gli slots e aggiorna la visualizzazione all'inserimento o rimozione di elementi slotted.**
326326

327-
Inoltre, dal momento che i nodi del light DOM non vengono copiati, ma solo visualizzati negli slots, le modifiche al loro interno saranno immediatamente visibili.
327+
Inoltre, dal momento che i nodi del light DOM non vengono copiati, ma solamente visualizzati negli slots, le modifiche al loro interno saranno immediatamente visibili.
328328

329-
Quindi non dobbiamo fare nulla per aggiornare la visualizzazione. Ma se il codice del componente vuole avere dei dettagli sulla modifica degli slots, allora si potrà usare l'evento `slotchange`.
329+
Ne consegue che non dobbiamo fare assolutamente nulla per aggiornare la visualizzazione. Ma se il codice del componente vuole dei dettagli sulla modifica degli slots, allora si potrà usare l'evento `slotchange`.
330330

331331
Per esempio, qui l'elemento del menù viene inserito dinamicamente dopo un secondo, ed il titolo cambia dopo 2 secondi:
332332

@@ -344,7 +344,7 @@ customElements.define('custom-menu', class extends HTMLElement {
344344
<ul><slot name="item"></slot></ul>
345345
</div>`;
346346
347-
// shadowRoot non puo' gestori di evento, quindi usiamo il primo nodo figlio
347+
// shadowRoot non puo' gestire l'evento, quindi usiamo il primo nodo figlio
348348
this.shadowRoot.firstElementChild.addEventListener('slotchange',
349349
e => alert("slotchange: " + e.target.name)
350350
);
@@ -372,23 +372,23 @@ In questo esempio, ci sono due eventi `slotchange`:
372372

373373
`slotchange: item` viene scaturito quando viene aggiunto un nuovo `<li slot="item">`.
374374

375-
Norta bene: non ci sono eventi `slotchange` dopo 2 secondi, quando viene modificato il contenuto di `slot="title"`. Questo perché non ci sono modifiche slot. Abbiamo modificato il contenuto dentro l'elemento slotted, che è tutt'altra cosa.
375+
Nota bene: non ci sono eventi `slotchange` dopo 2 secondi, quando viene modificato il contenuto di `slot="title"`. Questo perché non ci sono modifiche slot. Abbiamo modificato il contenuto dentro l'elemento slotted, che è uan cosa differente e non collegata.
376376

377-
Volendo tenere traccia delle modifiche interne al light DOM tramite JavaScript, potremmo anche usare un meccanismo più generico come quello dei [MutationObserver](info:mutation-observer).
377+
Volendo però tenere traccia delle modifiche interne nel light DOM tramite JavaScript, potremmo anche usare un meccanismo più generico come quello dei [MutationObserver](info:mutation-observer).
378378

379379
## Slot API
380380

381381
Infine, citiamo i metodi JavaScript inerenti gli slots.
382382

383-
Come già visto, JavaScript osserva il DOM "effettivo", privo di flattening. Ma, se lo shadow tree ha il `{mode: 'open'}`, possiamo vedere quali elementi vengono assegnati a uno slot e, vice versa, lo slot con l'elemento al suo interno:
383+
Come già visto, JavaScript tiene d'occhio il DOM "effettivo", privo di flattening. Ma, se lo shadow tree ha il `{mode: 'open'}`, possiamo vedere quali elementi vengono assegnati a uno slot o, viceversa, lo slot con l'elemento al suo interno:
384384

385385
- `node.assignedSlot` -- restiuisce l'elemento `<slot>` a cui è assegnato il `node`.
386-
- `slot.assignedNodes({flatten: true/false})` -- nodi DOM, assegnati allo slot. L'opzione `flatten` è `false` di default. Se impostata esplicitamente a `true`, analizzerà più in profondità nel flattened DOM, restituendo gli slot annidati in caso di componenti annidati o il fallsback content se non vi fossero nodi assegnati.
387-
- `slot.assignedElements({flatten: true/false})` -- Elementi DOM, assegnati allo slot (come sopra, ma solo elementi nodi).
386+
- `slot.assignedNodes({flatten: true/false})` -- nodi DOM, assegnati allo slot. L'opzione `flatten` è `false` di default. Se impostata esplicitamente a `true`, analizzerà più in profondità all'interno del flattened DOM, restituendo gli slot annidati in caso di componenti annidati o il fallback content, in assenza di nodi assegnati.
387+
- `slot.assignedElements({flatten: true/false})` -- Elementi DOM, assegnati allo slot (come sopra, ma solo elementi di tipo nodo).
388388

389-
Questi metodi sono utili quando dobbiamo non solo mostrare lo sloetted content, ma anche tracciarli in JavaScript.
389+
Questi metodi sono utili quando dobbiamo mostrare, non solo lo slotted content, ma anche tenerne traccia con JavaScript.
390390

391-
Ad esempio, se il componente `<custom-menu>` component vuole sapere, cosa mostra, può tracciare `slotchange` ed ottenere gli elementi da `slot.assignedElements`:
391+
Ad esempio, se il componente `<custom-menu>` vuole sapere cosa sta mostrando, può tracciare `slotchange` ed ottenere gli elementi da `slot.assignedElements`:
392392

393393
```html run untrusted height=120
394394
<custom-menu id="menu">
@@ -431,12 +431,12 @@ setTimeout(() => {
431431

432432
## Riepilogo
433433

434-
Generalmente, se un elemento ha lo shadow DOM, il suo light DOM non viene mostrato. Gli slots permettono di mostrare gli elementi del light DOM ne punti contrassegnati dello shadow DOM.
434+
Generalmente, se un elemento ha lo shadow DOM, il suo light DOM non viene mostrato. Gli slots permettono di mostrare gli elementi del light DOM nei punti contrassegnati dello shadow DOM.
435435

436436
Esistono due tipi di slots:
437437

438438
- Named slots: `<slot name="X">...</slot>` -- ottiene i figli light tramite `slot="X"`.
439-
- Default slot: il primot `<slot>` senza un nome ( i successivi elementi privi di nome vengono ignorati) -- ottiene i figli light unslotted.
439+
- Default slot: il primot `<slot>` senza un nome (i successivi elementi privi di nome vengono ignorati) -- ottiene i figli light unslotted.
440440
- Se ci sono più elementi per uno stesso slot -- vengono accodati uno dopo l'altro.
441441
- Il contenuto dell'elemento `<slot>` viene usato come un ripeigo (fallback). Viene mostrato se non ci sono figli light per un determinato slot.
442442

0 commit comments

Comments
 (0)