0.3.17 • Published 1 year ago

form-generator-angular v0.3.17

Weekly downloads
-
License
-
Repository
-
Last release
1 year ago

FormGenerator

Cette librairie permet la génération automatique du HTML d'un formulaire en fonction d'un formGroup donné.

Utiliser

Cette librairie nécessite les dépendances suivantes

"@angular/common": "^10.1.2",`

`"@angular/core": "^10.1.2",`

`"@angular/material": "^10.1.2",`

`"@angular/cdk": "^10.1.2",`

`"@angular/platform-browser": "^10.1.2"

Pour utiliser la librairie, après l'import il faut créer un formGroup dans le component.ts dans lequel on veut générer le formulaire par exemple :

form = new FormGroup({
    expeditor: new SelectControl({id: uuidv4(), name: "expeditor", label: "Magasin expéditeur", valuesEnable: [{storeCode: "M03" , name: "test"}], valueLabelPropertieName: "name", defaultValue: "M03"}, "", [Validators.required]),
    receivor: new SelectControl({id: uuidv4(), name: "receivor", label: "Magasin destinataire", valuesEnable: ["M03", "MN2"]}, "", [Validators.required]),
    comment: new TextAreaControl({id: uuidv4(), name: "comment", label: "Motif: "}, "",[Validators.required]),
    articles: new MultipleAddControl({labelToAdd: "Ajouter un article", formType: this.formToAddArticle, 
    functionToReturnLabelToShow: this.getArticleLabel, id: uuidv4(), name: "articles", label: "Articles"},"", [Validators.required])
  })

Dans cet exemple on a deux champs select et un text area. Les premiers paramètres seront expliqués ci-dessous, pour les deux derniers ils sont optionnels et correspondent dans tous les cas aux paramètres des FormControl.

Vous pouvez également ajouter une liste de message d'erreurs qui seront visible en fonction des validateurs de formulaire utilisés.

errorsLabel: Map<string, string>;
constructor() {
    this.errorsLabel = new Map();
    this.errorsLabel.set('required', "Ce champ est requis");
}

Dans le fichier html il suffit de rejouter :

<form-generator [errorsLabel]="errorsLabel" [form]="form"></form-generator>

ATTENTION: Il faut utiliser la balise et pas sinon vous aurez l'erreur :

Error: src/app/components/create/create.component.html:50:3 - error NG8001: 'form-generator-angular' is not a known element:

1. If 'form-generator-angular' is an Angular component, then verify that it is part of this module.
2. If 'form-generator-angular' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.

La librairie est configurable en ajoutant le paramètre

[configs]="config"

à la déclaration du formGenerator. config étant un objet Configuration.

Support

La librairie supporte actuellement

ClasseExplicationParamètres
GeneratorControlClasse qui hérite de FormControl et dont héritent les classes suivantes- label : texte qui est affiché- id : id qui apparaît dans les classes- name : nom du champ dans le formulaire- defaultValue : définit la valeur par défaut à afficher
SelectControlCorrespond à un champ select- valuesEnable : la liste des valeurs possibles - valueLabelPropertieName : le nom du paramètre de l'objet dans valuesEnable à afficher pour la sélection. Si null et que vlauesEnable est une liste de string, on affiche simplement le string. TODO passer ce paramètre en une fonction callback
TextAreaControlCorrespond à un champ textArea
InputTextControlCorrespond à un champ input text
InputNumberControlCorrespond à un champ input number- min : valeur minimale- max : valeur maximale
GeneratorArrayControlClasse qui hérite de FormArray et dont héritent les classes suivantes- label : texte qui est affiché- id : id qui apparaît dans les classes- name : nom du champ dans le formulaire- defaultValues : valeurs par défaut. Est un objet qui possède les même keys que l'objet contenu dans le formType.
MultipleAddControlCorrespond à un FormArray où l'on rajoute une quantité indéterminée de fois le même élément- formType : le formulaire à rajouter dans la liste - functionToReturnLabelToShow : fonction callback qui prend un formulaire en paramètre, et retourne un string. Le retour est la valeur affichée dans l'affichage des éléments. - labelToAdd : valeur affichée dans le bouton pour ajouter l'élément à la liste

Configuration

La configuration se fait au moyen d'un objet Configuration qui contient les paramètres suivants.

NomTypeValeur par défautDescription
showErrorOnlyTounchedbooleanfalseSi true ne montre les erreurs qu'une fois touché

Updates

V.0.1.0 Le placement des variables dans les classes héritant de GeneratorControl a été modifié pour ajouter une valeur par défaut. Cela impacte toute déclaration de classe héritant de GeneratorControl.

V 0.2.0 Le placement des variables dans les classes héritant de GeneratorArrayControl a été modifié pour ajouter les valeurs par défaut.

V 0.3.0 Les configurations propres à chaque control sont maintenant dans des interfaces. Les déclarations se font au moyen d'un objet implémentant cette interface.

Common

This library was generated with Angular CLI version 10.1.6.

Code scaffolding

Run ng generate component component-name --project form-generator to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module --project form-generator.

Note: Don't forget to add --project form-generator or else it will be added to the default project in your angular.json file.

Build

Run ng build form-generator to build the project. The build artifacts will be stored in the dist/ directory.

Publishing

After building your library with ng build form-generator, go to the dist folder cd dist/form-generator and run npm publish.

Running unit tests

Run ng test form-generator to execute the unit tests via Karma.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.

TODO

  • Ajouter une gestion fine de l'event valuesChange pour indiquer quels sont les éléments qui changent
  • Dans le cas où on définit un min et un max ajouter automatiquement un validators
0.3.17

1 year ago

0.3.16

1 year ago

0.3.15

1 year ago

0.3.14

1 year ago

0.3.9

2 years ago

0.3.13

2 years ago

0.3.12

2 years ago

0.3.11

2 years ago

0.3.10

2 years ago

0.3.6

2 years ago

0.3.5

2 years ago

0.3.8

2 years ago

0.3.7

2 years ago

0.3.4

2 years ago

0.3.1

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago

0.1.0

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago