Ionic fournit une bibliothèque complète de composants conçus pour créer des interfaces mobiles modernes, cohérentes et adaptatives.
Tous les composants ion-* :
Les composants Ionic ne sont pas de simples <div> stylées.
Ils offrent :
Adaptation automatique selon la plateforme
Composants pensés pour le mobile
Intégration Vue 3
💬 En résumé : Vous vous concentrez sur la logique et l’expérience, Ionic se charge du rendu natif.
💡 Ça vous rappelle quelque chose… ? 😉
Si vous avez bien suivi au module 294, ceci vous rappellera fortement Vuetify :
La différence ici :
Ionic applique automatiquement le style adéquat :
Un même code Vue :
🚨 IMPORTANT
Pour aller plus loin, consultez la doc officielle : 👉 https://ionicframework.com/docs/components
🧠 Responsabilité étudiante : explorer d’autres composants et leurs variantes pour enrichir vos projets.
Ces composants forment la colonne vertébrale d’une page Ionic :
ion-appion-pageion-header / ion-toolbar / ion-title
ion-contention-footerion-app
Conteneur racine obligatoire pour toute app Ionic
Créé automatiquement dans main.ts (rarement modifié à la main)
Gère :
En pratique : ➡️ vous le voyez peu, mais il est toujours là.
ion-page
Conteneur d’une page individuelle (lié à une route Vue).
<ion-page>
<ion-header>...</ion-header>
<ion-content>...</ion-content>
</ion-page>
Rôles :
ion-header / ion-toolbar / ion-title
Barre supérieure de la page (header).
<ion-header>
<ion-toolbar color="primary">
<ion-title>Mes notes</ion-title>
</ion-toolbar>
</ion-header>
Usages :
ion-content
Zone centrale et scrollable de la page.
<ion-content>
<p>Bienvenue dans l’application.</p>
</ion-content>
Propriétés utiles :
fullscreen → occupe toute la hauteur sous le headerscroll-events → écouter les événements de scroll💡 C’est ici que se trouve 90% du contenu de vos écrans.
ion-footer
Barre inférieure de l’écran (footer).
<ion-footer>
<ion-toolbar>
<ion-button expand="block">Valider</ion-button>
</ion-toolbar>
</ion-footer>
Utilisations typiques :
Pour présenter le contenu de manière claire :
ion-cardion-list / ion-item
ion-labelion-avatarion-chipion-iconion-card
Bloc d’information polyvalent.
Usages : fiches, cartes de profils, résumé d’info…
<ion-card>
<ion-card-header>
<ion-card-title>Note importante</ion-card-title>
</ion-card-header>
<ion-card-content>
Voici un texte à l’intérieur d'une carte.
</ion-card-content>
</ion-card>ion-list et ion-item
Affichage de listes (paramètres, messages, tâches…).
Propriétés utiles sur ion-item :
button → rend l’item cliquabledetail → ajoute la petite flèche (navigation)<ion-list>
<ion-item v-for="task in tasks" :key="task.id">
<ion-label>{{ task.title }}</ion-label>
</ion-item>
</ion-list>ion-label
Texte principal à l’intérieur d’un ion-item.
<ion-item>
<ion-label>Paramètres</ion-label>
</ion-item>
S’adapte automatiquement : ➜ gestion de la taille, ellipsis, alignement…
ion-avatar
Photo de profil / image ronde.
🎯 Parfait pour les listes de contacts, messages, profils.
<ion-item>
<ion-avatar slot="start">
<img src="/assets/avatar.png" />
</ion-avatar>
<ion-label>Jean Dupont</ion-label>
</ion-item>ion-chip
Petit badge (tag, statut, catégorie).
Usages :
<ion-chip color="success">Terminé</ion-chip>ion-icon
Icônes Ionicons intégrées.
ion-button, ion-item, etc.<ion-icon :icon="checkmarkCircle" />Composants principaux :
ion-inpution-textareaion-toggleion-checkboxion-radio / ion-radio-group
ion-selection-buttonion-input
Champ de texte simple.
🔁 À combiner avec
v-modelpour la gestion de formulaire.
<ion-item>
<ion-input
label="Prénom"
placeholder="Entrez votre prénom">
</ion-input>
</ion-item>ion-textarea
Texte multiligne.
auto-grow → grandit automatiquement<ion-textarea v-model="content" auto-grow />ion-toggle
Interrupteur On / Off.
💡 À utiliser pour les préférences (notifications, thème, options…).
<ion-toggle v-model="isEnabled">
Activer
</ion-toggle>ion-checkbox
Case à cocher.
➜ convient bien pour les conditions générales, options multiples…
<ion-checkbox v-model="checked">
Accepter
</ion-checkbox>ion-radio & ion-radio-group
Choix exclusif (un seul élément sélectionné).
La valeur par défaut est
strawberries→ définie sur le groupe.
<ion-radio-group value="strawberries">
<ion-radio value="grapes">Grapes</ion-radio><br />
<ion-radio value="strawberries">Strawberries</ion-radio><br />
<ion-radio value="pineapple">Pineapple</ion-radio><br />
<ion-radio value="cherries">Cherries</ion-radio>
</ion-radio-group>ion-select
Menu déroulant mobile.
<ion-select v-model="category" placeholder="Choisir une catégorie">
<ion-select-option value="work">Travail</ion-select-option>
<ion-select-option value="home">Maison</ion-select-option>
</ion-select>ion-button
Bouton polyvalent.
Propriétés utiles :
expand="block" → pleine largeurcolor="primary" → couleur du thèmefill="outline" → bouton contour<ion-button expand="block" @click="saveNote">
Sauvegarder
</ion-button>Composants pour informer l’utilisateur :
ion-toast → messages courts, temporairesion-alert → confirmations / erreurs bloquantesion-loading → état de chargemention-toast – Notification temporaireImports (Vue) : IonButton, IonToast depuis @ionic/vue.
⭐ Parfait pour : confirmation rapide, info non bloquante.
<ion-button id="open-toast">Open Toast</ion-button>
<ion-toast
trigger="open-toast"
message="Hello World!"
:duration="3000">
</ion-toast>ion-alert – Boîte de dialogueScript (exemple) :
const alertButtons = ['Action']
🔐 À utiliser pour les actions importantes / destructrices.
<ion-button id="present-alert">Click Me</ion-button>
<ion-alert
trigger="present-alert"
header="A Short Title Is Best"
sub-header="A Sub Header Is Optional"
message="A message should be a short, complete sentence."
:buttons="alertButtons">
</ion-alert>ion-loading – Indicateur de chargementImports : IonButton, IonLoading.
🎯 Utile pour les appels réseau lents, synchro, login…
<ion-button id="open-loading">
Show Loading
</ion-button>
<ion-loading
trigger="open-loading"
:duration="3000"
message="Dismissing after 3 seconds...">
</ion-loading>Deux concepts importants :
ion-tabs / ion-tab-bar / ion-tab-button
Navigation par onglets (souvent en bas).
<ion-tabs>
<ion-tab-bar slot="bottom">
<ion-tab-button tab="home">
Accueil
</ion-tab-button>
<ion-tab-button tab="settings">
Paramètres
</ion-tab-button>
</ion-tab-bar>
</ion-tabs>
📌 La logique de routing associée sera détaillée au chapitre 3.5 – Navigation.
ion-menu
Menu latéral coulissant.
<ion-menu content-id="main-content">
<ion-header>
<ion-toolbar>
<ion-title>Menu Content</ion-title>
</ion-toolbar>
</ion-header>
<ion-content class="ion-padding">
This is the menu content.
</ion-content>
</ion-menu>
💡 Utile pour les apps avec beaucoup de sections (ex. paramètres, profil, aide…).
🎯 Objectif : créer un écran Ionic complet avec plusieurs types de composants.
Dans Tab2Page.vue, vous devez :
Ajouter un header avec :
Afficher une liste dynamique avec v-for
→ ex. liste de tâches, notes, paramètres…
Ajouter un bouton pour ouvrir :
Afficher un toast lorsqu’une action de votre choix est effectuée → ex. “Élément ajouté”, “Action réussie”, etc.
🧠 Essayez d’utiliser au moins :
- 1 composant de structure
- 2 composants d’affichage
- 2 composants de formulaire / interaction
- 1 composant de feedback (toast, alert, loading)