Rend moins pénible de faire des inputs de angular matérial.
Les erreurs sont implémentées et traduite dans 6 langues (anglais, francais, espagnol, italien, portugais et allemand) selon la langue du navigateur.
Par defaut anglais
Signal form pas encore compatible avec angular material
- 1.1.11 => angular 20.3.0
- 1.2.x => angular 21
// app.config.ts
import { provideJpMatInput } from '@jetonpeche/angular-mat-input';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideJpMatInput()
]
};// angular.json
{
// ...
"assets": [
// ajouter en plus
{
"glob": "**/*",
"input": "node_modules/@jetonpeche/angular-mat-input/src/assets",
"output": "/assets/"
}]
}formControlName: Obligatoirelabel: Nom de l'inputplaceholder: Placeholder de l'inputtype: En option, defaut type text, valeurs possibles- text, url, search, tel, email, color
suffixIcon: Définir et place l'icon à gauche (mat icon)prefixIcon: Définir et place l'icon à droite (mat icon)floatLabel: Bloquer le label en haut de l'inputshowMaxLength: Affiche la longeur max d'une chaine en bas de l'inputhiddenRequiredMarker: Supprimer * quand l'input est obligatoire
<jp-input-text label="Nom" formControlName="nom" />let form = new FormGroup({
nom: new FormControl(
"",
[Validators.maxLength(3), Validators.email, Validators.required]
)
});formControlName: Obligatoirelabel: Nom de l'inputplaceholder: Placeholder de l'inputstep: Pas de l'incrémentation et décrémentationsuffixIcon: Définir et place l'icon à gauche (mat icon)prefixIcon: Définir et place l'icon à droite (mat icon)floatLabel: Bloquer le label en haut de l'inputtextRight: Aligner le texte à droitehiddenRequiredMarker: Supprimer * quand l'input est obligatoirehiddenArrows: Supprimer les flèches d'incrément et d'décrementale
<jp-input-number label="Age" formControlName="age" />let form = new FormGroup({
age: new FormControl(
"",
[Validators.max(100), Validators.required]
)
});Donne la règle du mot de passe:
- 1 minuscule
- 1 majuscule
- 1 chiffre
- 1 caractère spécial
- 8 caractères minimum au total
formControlName: Obligatoirelabel: Nom de l'inputplaceholder: Placeholder de l'inputfloatLabel: Bloquer le label en haut de l'inputhiddenButtonSwitch: Masquer le bouton qui permet d'afficher le mot de passehiddenRequiredMarker: Supprimer * quand l'input est obligatoireshowMaxLength: Affiche la longeur max d'une chaine en bas de l'input
<jp-input-password label="Mot de passe" formControlName="mdp" />let form = new FormGroup({
mdp: new FormControl(
"",
[passwordValidator, Validators.required]
)
});minDateValidator: Définir la date minimum possible dans le pickermaxDateValidator: Définir la date maximum possible dans le picker
let date = new FormControl(
null, [
minDateValidator("2025-01-01"), // possible avec type Date
maxDateValidator("2025-01-20"), // possible avec type Date
]
);Enum des jours de la semaine
Enum des mois de l'année (index 0 à 11)
formControlName: Obligatoirelabel: Nom de l'inputiconPicker: Changer l'icone du picker (mat icon)floatLabel: Bloquer le label en haut de l'inputhiddenRequiredMarker: Supprimer * quand l'input est obligatoiretouchUi: Afficher le picker en mode téléphonedisabledDays: Jours de la semaine à bloquerdisabledDates: Dates à bloquer dans chaque mois (mois-jour)disabledMonths: Mois à bloquerdisabledPartial: Désactiver l'input mais garde le picker actifdisabledWeekend: Désactiver le samedi et dimanchedisabledWeek: Désactiver les jours de la semaine sauf samedi et dimanchedisabledSundayAndMonday: Désactiver dimanche et lundi
<jp-input-date label="Date naissance" formControlName="date" />let form = new FormGroup({
date: new FormControl(
null, [
minDateValidator("2025-01-01"), // possible avec type Date
maxDateValidator("2025-01-20"), // possible avec type Date
Validators.required
]
)
});formControlName: Obligatoirelabel: Nom de l'inputplaceholder: Placeholder de l'inputrows: Nombre de lignecols: Nombre de colonnefloatLabel: Bloquer le label en haut de l'inputshowMaxLength: Affiche la longeur max d'une chaine en bas de l'inputhiddenRequiredMarker: Supprimer * quand l'input est obligatoire
<jp-textarea label="Info en plus" formControlName="info" />let form = new FormGroup({
info: new FormControl(
"",
[Validators.maxLength(3_000)]
)
});formControlName: Obligatoirelabel: Nom de l'inputicon: Icon du bouton (mat icon)accept: Liste des extensions de fichier acceptésmultiple: Autoriser à mettre plusieurs fichiermatButton: Style du boutonmatMiniFab: Style du boutonmatFab: Style du boutonmatIconButton: Style du boutonextended: Permet de mettre un label sur un boutonmatFab
<jp-input-file-btn matFab extended label="Info en plus" formControlName="fichier" />let form = new FormGroup({
fichier: new FormControl<FileList>(null)
});icon: Icon du drop zone (mat icon)accept: Liste des extensions de fichier acceptésnotMultiple: Ne pas autoriser à mettre plusieurs fichierdisabled: Désactiver le drop zoneinfo: Texte à mettre en plusselectedFiles: Event qui donne les fichiers
<jp-input-file-drop-zone notMultiple (selectedFiles)="onChange($event)" />onChange(_liste: FileList): void
{
console.log(_liste);
}formControlName: ObligatoiredataSource: Obligatoirelabel: Nom de l'inputplaceholder: Placeholder de l'inputfloatLabel: Bloquer le label en haut de l'inputhiddenRequiredMarker: Supprimer * quand l'input est obligatoirematAutocompletePosition: Position de l'autocomplete (défaut auto)requireSelection: La valeur choisi doit être dans les choix proposésdisabledFilterComplete: Désactiver le filtre des choix de l'autocompleteautoDesactiveFirstOption: Désactiver l'auto selection du premier choixopened: Event ouverture autocompleteclosed: Event déselection autocompleteautocompleteChange: Event change de l'input
<jp-autocomplete (autocompleteChange)="onChange($event)"
label="Chiffre"
[dataSource]="liste()"
formControlName="info" />liste = signal<AutocompleteDataSource[]>([{
display: "Un",
value: 1
},
{
display: "Deux",
value: 2
}]);
let form = new FormGroup({
info: new FormControl<number>(
"",
[Validators.Required]
)
});
onChange(_valeur: string): void
{
console.log(_valeur);
}icon: Icon du bouton (mat icon)label: Texte du boutonmatTooltip: Texte du tooltipmatTooltipPosition: Position du tooltip par defautmatButton: Style du bouton (defaut filled)loading: Etat pour afficher ou non le spinnermatMiniFab: Style du boutonmatFab: Style du boutonmatIconButton: Style du boutonextended: Permet de mettre un label sur un boutonmatFabdisabledInteractive: Désactiver les events et focus du boutondisableRipple: Désactiver l'effet de cliquedisabled: Désactiver le boutonmatDialogClose: Même fonctionnement quemat-dialog-closeclicked: Event click du bouton
loading = true => disabledInteractive activé
<jp-button-loader icon="plus"
label="Click !"
matFab
extended
[loading]="false"
(clicked)="onClick()" />onClick(): void
{
console.log("Coucou");
}