|
1 | 1 |
|
2 | 2 | # Custom elements
|
3 | 3 |
|
4 |
| -We can create custom HTML elements, described by our class, with its own methods and properties, events and so on. |
| 4 | +Nous pouvons créer des éléments HTML personnalisés, définis par nos classes, avec leur propres méthodes et propriétés, gestionnaires d'événement, etc. |
5 | 5 |
|
6 |
| -Once a custom element is defined, we can use it on par with built-in HTML elements. |
| 6 | +Une fois qu'un élément personnalisé est définit, nous pouvons l'utiliser au même titre qu'un élément HTML classique. |
7 | 7 |
|
8 |
| -That's great, as HTML dictionary is rich, but not infinite. There are no `<easy-tabs>`, `<sliding-carousel>`, `<beautiful-upload>`... Just think of any other tag we might need. |
| 8 | +C'est parfait, sachant que le dictionnaire HTML est riche, mais pas infini. Il n'y a pas de `<easy-tabs>`, `<sliding-carousel>`, `<beautiful-upload>`... Pensez un instant à toute les balises dont nous pourrions avoir besoin. |
9 | 9 |
|
10 |
| -We can define them with a special class, and then use as if they were always a part of HTML. |
| 10 | +Nous pouvons les définir avec une classe spéciale, et les utiliser comme des balises HTML classique. |
11 | 11 |
|
12 |
| -There are two kinds of custom elements: |
| 12 | +Il y a deux sortes d'éléments personnalisés : |
13 | 13 |
|
14 |
| -1. **Autonomous custom elements** -- "all-new" elements, extending the abstract `HTMLElement` class. |
15 |
| -2. **Customized built-in elements** -- extending built-in elements, like a customized button, based on `HTMLButtonElement` etc. |
| 14 | +2. **Éléments personnalisés autonome** -- les nouveaux éléments, qui étendent la classe abstraite `HTMLElement`. |
| 15 | +<!-- 2. **Customized built-in elements** -- extending built-in elements, like a customized button, based on `HTMLButtonElement` etc. --> |
| 16 | +**Éléments personnalisés intégrés** -- ils étendent les éléments déjà intégrés au navigateur, comme un bouton personnalisé, basé sur `HTMLButtonElement`. |
16 | 17 |
|
17 |
| -First we'll cover autonomous elements, and then move to customized built-in ones. |
| 18 | +<!-- First we'll cover autonomous elements, and then move to customized built-in ones. --> |
| 19 | +Nous allons voir les éléments personnalisés autonome dans un premier temps, puis nous passerons aux éléments personnalisés déjà intégrés au navigateur. |
18 | 20 |
|
19 |
| -To create a custom element, we need to tell the browser several details about it: how to show it, what to do when the element is added or removed to page, etc. |
| 21 | +<!-- To create a custom element, we need to tell the browser several details about it: how to show it, what to do when the element is added or removed to page, etc. --> |
| 22 | +Pour créer un élément personnalisé, nous allons devoir donner quelques détails au navigateur : Comment le montrer, que faire lorsque cet élément est chargé dans le DOM, ect... |
20 | 23 |
|
21 |
| -That's done by making a class with special methods. That's easy, as there are only few methods, and all of them are optional. |
| 24 | +<!-- That's done by making a class with special methods. That's easy, as there are only few methods, and all of them are optional. --> |
| 25 | +C'est possible en créant une classe avec des méthodes spéciales. C'est facile, sachant qu'il n'y seulement que quelques méthodes, et elles sont toutes optionnelles. |
22 | 26 |
|
23 |
| -Here's a sketch with the full list: |
| 27 | +<!-- Here's a sketch with the full list: --> |
| 28 | +Voici la classe et toute ses méthodes : |
24 | 29 |
|
25 | 30 | ```js
|
26 | 31 | class MyElement extends HTMLElement {
|
27 | 32 | constructor() {
|
28 | 33 | super();
|
29 |
| - // element created |
| 34 | + // créer l'élément |
30 | 35 | }
|
31 | 36 |
|
32 | 37 | connectedCallback() {
|
33 |
| - // browser calls this method when the element is added to the document |
34 |
| - // (can be called many times if an element is repeatedly added/removed) |
| 38 | + // le navigateur appelle cette méthode lorsque l'élément est ajouté au document |
| 39 | + // elle peut-être appelé autant de fois que lélément est ajouté ou supprimé) |
35 | 40 | }
|
36 | 41 |
|
37 | 42 | disconnectedCallback() {
|
38 |
| - // browser calls this method when the element is removed from the document |
39 |
| - // (can be called many times if an element is repeatedly added/removed) |
| 43 | + // le navigateur appelle cette méthode lorsque l'élément est supprimé du document |
| 44 | + // elle peut-être appelé autant de fois que lélément est ajouté ou supprimé) |
40 | 45 | }
|
41 | 46 |
|
42 | 47 | static get observedAttributes() {
|
43 |
| - return [/* array of attribute names to monitor for changes */]; |
| 48 | + return [/* tableau listant les attributs dont les changements sont à surveiller */]; |
44 | 49 | }
|
45 | 50 |
|
46 | 51 | attributeChangedCallback(name, oldValue, newValue) {
|
47 |
| - // called when one of attributes listed above is modified |
| 52 | + // appelé lorsque l'un des attributs listé par la méthode ci-dessus est modifié |
48 | 53 | }
|
49 | 54 |
|
50 | 55 | adoptedCallback() {
|
51 |
| - // called when the element is moved to a new document |
52 |
| - // (happens in document.adoptNode, very rarely used) |
| 56 | + // méthode appelé lorsque l'élément est envoyé vers un nouveau document |
| 57 | + // (utilisé très rarement avec document.adoptNode) |
53 | 58 | }
|
54 | 59 |
|
55 |
| - // there can be other element methods and properties |
| 60 | + // vous pouvez ajouter d'autres méthodes ou propriétées |
56 | 61 | }
|
57 | 62 | ```
|
58 | 63 |
|
59 |
| -After that, we need to register the element: |
| 64 | +<!-- After that, we need to register the element: --> |
| 65 | +Après ça, nous devons enregistrer cet élément : |
60 | 66 |
|
61 | 67 | ```js
|
62 | 68 | // let the browser know that <my-element> is served by our new class
|
|
0 commit comments