Mise en Place d'un Sélecteur de Date Personnalisable avec Angular

Présentation de la Bibliothèque

ng2-date-picker est un comopsant d'interface utilisateur avancé et hautement configurable, spécialement conçu pour les applications Angular modernes. Compatible avec les versions récentes du framework (Angular 15 et supérieures), il permet aux développeurs d'adapter finement le comportement et l'apparence du calendrier via un objet de configuration, répondant ainsi à des besoins métier complexes.

Initialisation et Configuration du Projet

Isntallation des Dépendances

Intégrez la bibliothèque dans votre espace de travail via le gestionnaire de paquets npm :

npm install ng2-date-picker --save

Importation du Module

Déclarez le module du sélecteur de date dans votre module racine ou feature module :

import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { DpDatePickerModule } from 'ng2-date-picker';
import { FormsModule } from '@angular/forms';
import { PlanningComponent } from './planning.component';

@NgModule({
  declarations: [PlanningComponent],
  imports: [
    BrowserModule,
    FormsModule,
    DpDatePickerModule
  ],
  bootstrap: [PlanningComponent]
})
export class AppModule { }

Intégration des Styles Globaux

Le composant nécessite les styles de superposition (overlay) de l'Angular CDK. Vous pouvez les importer dans votre fichier de styles global (styles.css ou styles.scss) :

@import '~@angular/cdk/overlay-prebuilt.css';

Ou les référencer directement dans le fichier angular.json :

"styles": [
  "node_modules/@angular/cdk/overlay-prebuilt.css",
  "src/styles.css"
]

Utilisation dans le Template

Insérez le sélecteur dans votre composant HTML en liant les données et les options :

<dp-date-picker 
  [(ngModel)]="targetDate" 
  [config]="calendarSettings"
  placeholder="Sélectionnez une échéance">
</dp-date-picker>

Définition des Options

Personnalisez le comportement dans la classe TypeScript du composant :

calendarSettings = {
  format: 'YYYY/MM/DD',
  disableKeypress: true,
  closeOnSelect: false,
  showNearMonthDays: true,
  min: new Date(2023, 0, 1)
};

Scénarios d'Utilisation et Bonnes Pratiques

Formulaire de Réservation Standard

Intégrez le sélecteur dans un formulaire template-driven avec une validation de base :

<form #bookingForm="ngForm" (ngSubmit)="confirmBooking(bookingForm)">
  <dp-date-picker
    name="departureDate"
    [(ngModel)]="departureDate"
    [config]="calendarSettings"
    required>
  </dp-date-picker>
  <button type="submit" [disabled]="bookingForm.invalid">
    Confirmer la réservation
  </button>
</form>

Sélection de Dates Multiples

Pour permettre à l'utilisateur de choisir plusieurs jours (par exemple, pour définir des jours de disponibilité), activez l'option correspondante :

availabilityConfig = {
  allowMultiSelect: true,
  format: 'DD-MM-YYYY',
  closeOnSelect: false
};

Recommandations d'Implémentation

  • Localisation (i18n) : Configurez les locales pour traduire automatiquement les libellés des mois et des jours de la semaine selon la région de l'utilisateur.
  • Thématisation Avancée : Utilisez les variables CSS exposées par la bibliothèque ou l'attribut theme pour aligner parfaitement le calendrier avec votre charte graphique.
  • Gestion des Événements : Abonnez-vous aux émetteurs comme (onLeftNav) ou (onChange) pour déclencher des requêtes API ou des calculs dynamiques lors de la navigation ou de la sélection.

Intégrations Écosystémiques

Angular Material

Bien que possédant son propre style, le composant peut être harmonisé avec Angular Material. L'application de thèmes Material via les variables CSS permet de maintenir une cohérence visuelle stricte au sein de l'interface utilisateur.

Manipulation Temporelle avec Day.js

La bibliothèque s'appuie sur des parseurs légers et performants pour la gestion des formats. L'utilisation de Day.js en arrière-plan garantit des opérations de formatage, de parsing et de manipulation de dates rapides et immuables, extensibles via son système de plugins.

Formulaires Réactifs (Reactive Forms)

Le sélecteur est entièrement compatible avec l'API ReactiveFormsModule. Il peut être lié à un FormControl, permettant ainsi d'appliquer des validateurs synchrones et asynchrones complexes, ainsi qu'une gestion fine de l'état du formulaire (pristine, dirty, touched).

Étiquettes: Angular ng2-date-picker TypeScript angular-forms angular-cdk

Publié le 7 juillet à 19h40