@babbubba/bs-easy-form
TypeScript icon, indicating that this package has built-in type declarations

1.1.4 • Public • Published

BsEasyForm

It helps building forms with bootstrap style.

Supported form element

Common Input element

The following input element types are displayed with the input tag:

'text','password','email','number','search','tel','url','datetime-local','date','time','week','month'

The date types ('datetime-local','date','time','week','month') are formatted automatically using angular DatePipe. The value expected is a Angualr Date type value and he returned value is Date type as well.

Textarea

'textarea'

Checkbox

'checkbox'

Select element

'select', 'enum-checkbox',

Select2

'select2multi'

N.B.: To get correct style import the css file: "node_modules/@ng-select/ng-select/themes/default.theme.css" in the "styles" section of your angular.json.

Example

This is a simple configuration for the form building.

It will generate two input type 'text' with required validation and one select2 with multiple selection (not mandatory).

this.formConf = {
              controls: [
              {
                name: 'code',
                label: 'Codice',
                class: 'col-md-3',
                value: this.model?.code,
                type: 'text',
                validators: {
                  required: true
                }
              },
              {
                name: 'name',
                label: 'Nome',
                class: 'col-md-3',
                value: this.model?.name,
                type: 'text',
                validators: {
                  required: true
                }
              },
              {
                 name: 'membersId',
                 label: 'Membri',
                 value: this.model?.membersId,
                 type: 'select2multi',
                 class: 'col-md-6',
                 list: this.users,
                 validators: {}
              }
            ]
}

In the template file we use the dynamic form in this way:

 <BsDynamicForm *ngIf="formConf" [formConf]="formConf" (submittedValue)="submitted($event)"></BsDynamicForm>

The submitted event returns the IFormSubmit object. It contains:

  • formGroup - of type FormGroup it is the raw FormGroup submitted. You will never use the formGroup.value object because it doesn't contain parsed data object like Date types;
  • result - of type any this contains the parsed model (cloned from form binded data but parsed);

This is an example of how to handle the submit value event:

 submitted(response: IFormSubmit) {
  if (!response.formGroup.valid || !this.model) return;

  this.model = { ...this.model, ...response.result };
  // objectAssign(this.model, frm.value);

  if (this.model?.id) {
   //update
   this.myService.update(this.model).subscribe(res => {	... });
  }
  else {
   //create
   this.myService.create(this.model).subscribe(res => { ... });
  }
 }

Readme

Keywords

none

Package Sidebar

Install

npm i @babbubba/bs-easy-form

Weekly Downloads

2

Version

1.1.4

License

none

Unpacked Size

164 kB

Total Files

28

Last publish

Collaborators

  • babbubba