Giter Club home page Giter Club logo

axiomform's Introduction

Axiom Form

Online Demo

Usage Demo

Stackblitz Source Demo

Stackblitz Demo

Installation

Install component package from npm :

npm install axiom-form

Import component module :
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { AxiomFormModule } from 'axiom-form';

...

@NgModule({
  imports: [
    BrowserModule,
    FormsModule,
    ReactiveFormsModule,
    AxiomFormModule
  ], 
  declarations: [
    AppComponent
  ],
  bootstrap: [AppComponent]
})

...

Usage

  1. Use [ax-form] attribute component and assign a formGroup to it.
  2. For each input elements use axFormControl.
  3. For action buttons[Submit and Reset] use axFormButton and pass a string parameter to it as button type.
<form class="card" [formGroup]="form" [ax-form]="form" [axAutoDisableSubmit]="true" [axShowErrors]="true">
  <div class="form-row">
     <div class="form-group col-md-6">
        <label for="inputEmail">Email</label>
        <input type="email" axFormControl formControlName="email" class="form-control form-control-sm" id="inputEmail">
     </div>
     div class="form-group col-md-6">
         <label for="inputPassword">Password</label>
         <input type="password" axFormControl formControlName="password" class="form-control form-control-sm" id="inputPassword">
     </div>
     <button axFormButton="submit" type="button" (click)="save()" class="btn btn-sm btn-primary">Sign up</button>
     <button axFormButton="reset" type="button" class="btn btn-sm btn-danger ml-2" (click)="axForms.form.reset()">Clear</button>
  </div>
</form>

Custom form decorator

Also you can use Axiom custom form decorator @AxForm for every components you want and generate formGroups.

@AxForm({
  form: {
    email: ['', [Validators.required, Validators.email]],
    password: ['', [Validators.required, Validators.minLength(6)]],
    ...
  },
  form2 : { ... },
  form3 : { ... },
  ...
})

When use @AxForm decorator it create a new property for component class as axForms with type { [key: string]: FormGroup; }, so you can access each generated formGroups with this.axForms['your form name']. for better usage please implements AxForm interface in your component class.

Here is an example of decorator usage.

import { AxForm } from 'axiom-form'

@AxForm({
  form: {
    email: ['', [Validators.required, Validators.email]],
    password: ['', [Validators.required, Validators.minLength(6)]],
    address: [''],
    city: [''],
    state: [''],
    zip: ['', [Validators.minLength(10), Validators.maxLength(10),(control: AbstractControl): { [key: string]: any } => {
      var message = 'Just numbers accepted!';
      return /^\d+$/.test(control.value) ? null : { message: message };
    }]],
    agree: ['']
  }
})
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent implements AxForm {

  public axForms: { [key: string]: FormGroup; };

  public save(): void {
    console.log(this.axForms.form.value);
  }

}

@Input() Params

Name Type Usage
axAutoDisableSubmit boolean auto disable submit button when form is invalid
axShowErrors boolean show form errors as a list

License

MIT

axiomform's People

Contributors

mohammadmusaei avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.