1.0.6 • Published 4 years ago

ab-input v1.0.6

Weekly downloads
-
License
-
Repository
-
Last release
4 years ago

How to use

Install dependency

npm i -S ab-input

In angular.json, add dependent styles

"styles": [
  "./node_modules/primeng/resources/themes/nova-light/theme.css",
  "./node_modules/primeng/resources/primeng.min.css",
  "./node_modules/ab-input/ab-input.css",
  "src/styles.less"
]

In app.module.ts, import InputModule

import { InputModule } from 'ab-input';

@NgModule({
  declarations: [AppComponent],
  imports: [
    BrowserAnimationsModule,
    BrowserModule,
    FormsModule,
    HttpClientModule,
    AppRoutingModule,
    InputModule
  ],
  providers: [{ provide: NZ_I18N, useValue: en_US }],
  bootstrap: [AppComponent]
})

In app.component.ts, declare inputControl

inputControl = {
  model: "",
  type: "text",
  className: "user-name",
  controlName: "userName",
  placeholder: "user name",
  isRequired: true,
  pattern: "w"
};

In app.component.html, reference

<app-input
  [(ngModel)]="inputControl.model"
  [name]="inputControl.controlName"
  [control]="inputControl"
  [required]="inputControl.isRequired"
  [email]="inputControl.type === 'email'"
  [pattern]="inputControl.pattern"
></app-input>

Component Examples

Text input

inputControl = <inputItem>{
  model: "",
  type: "text",
  className: "user-name",
  controlName: "userName",
  placeholder: "user name",
  isRequired: true,
  pattern: "w"
};
<app-input
  [(ngModel)]="inputControl.model"
  [name]="inputControl.controlName"
  [control]="inputControl"
  [required]="inputControl.isRequired"
  [email]="inputControl.type === 'email'"
  [pattern]="inputControl.pattern"
></app-input>

Textarea input

inputControl = <inputItem>{
  model: "",
  type: "textarea",
  className: "remarks form-textarea",
  controlName: "remarks",
  placeholder: "remarks",
  isRequired: true,
  pattern: ""
};
<app-input
  [(ngModel)]="inputControl.model"
  [name]="inputControl.controlName"
  [control]="inputControl"
  [required]="inputControl.isRequired"
  [email]="inputControl.type === 'email'"
  [pattern]="inputControl.pattern"
></app-input>

Email input

inputControl = <inputItem>{
  model: "",
  type: "email",
  className: "email",
  controlName: "email",
  placeholder: "email",
  isRequired: true,
  pattern: ""
};
<app-input
  [(ngModel)]="inputControl.model"
  [name]="inputControl.controlName"
  [control]="inputControl"
  [required]="inputControl.isRequired"
  [email]="inputControl.type === 'email'"
  [pattern]="inputControl.pattern"
></app-input>

Number input

inputControl = <inputItem>{
  model: "",
  type: "number",
  className: "stock",
  controlName: "stock",
  placeholder: "stock",
  isRequired: true,
  pattern: "",
  minNumber: 12,
  isIntegerOnly: true // if allow float number, just remove this field
};
<app-input
  [(ngModel)]="inputControl.model"
  [name]="inputControl.controlName"
  [control]="inputControl"
  [required]="inputControl.isRequired"
  [email]="inputControl.type === 'email'"
  [pattern]="inputControl.pattern"
></app-input>

Datepicker

inputControl = <inputItem>{
  model: "",
  type: "calendar",
  className: "started-date",
  controlName: "startedDate",
  placeholder: "Started Date",
  isRequired: true
};
<app-input
  [(ngModel)]="inputControl.model"
  [name]="inputControl.controlName"
  [control]="inputControl"
  [required]="inputControl.isRequired"
  [email]="inputControl.type === 'email'"
  [pattern]="inputControl.pattern"
></app-input>