3.0.3 • Published 5 years ago

@angularfy/autonumeric v3.0.3

Weekly downloads
213
License
MIT
Repository
github
Last release
5 years ago

@angularfy/autonumeric

An Angular library that wraps the awesome AutoNumeric library

Get in touch on autonumeric@angularfy.com


@angularfy/autonumeric supports most of AutoNumeric options.

Checkout the demo

Note: In order to minimize the size of the @angularfy/autonumeric, the AutoNumeric library dependency is not bundled with it.

This means you need to include the AutoNumeric library.

Dependencies

The dependency is autoNumeric 4. Here is the list of minimal required versions:

@angularfy/autonumericangularautoNumeric
1.x.x^4.0.0^4.0.0
2.x.x^4.0.0^4.0.0
3.x.x^4.0.0^4.0.0

Installation

After installing the above dependencies, install @angularfy/autonumeric via npm:

npm install --save @angularfy/autonumeric

or yarn :

yarn add @angularfy/autonumeric

Once installed you need to import our main module:

import { AutonumericModule } from '@angularfy/autonumeric';

@NgModule({
  //...
  imports: [
            AutonumericModule.forRoot(), // ...
        ],
  //...
})
export class YourAppModule {
}

How to use the @angularfy/autonumeric ?

The AutoNumeric component can be instantiated the same way AutoNumeric can.

After importing the AutonumericModule in your component, you can define your options as follow :

this.myOptions = {
  digitGroupSeparator: '.',
  decimalCharacter: ',',
  decimalCharacterAlternative: '.',
  currencySymbol: '\u00a0€',
  currencySymbolPlacement: 's',
  roundingMethod: 'U',
  minimumValue: '0'
}

in your HTML :

<input [(ngModel)]="myValue" autonumeric [options]="myOptions"/>

or simply with a predefined option name:

<input autonumeric  [(ngModdel)]="myValue" options="French">

you can also use object literal as options directly in HTML

<input [(ngModdel)]="myValue" autonumeric [options]="{
              digitGroupSeparator: '.',
              decimalCharacter: ',',
              decimalCharacterAlternative: '.',
              currencySymbol: '\u00a0€',
              currencySymbolPlacement: 's',
              roundingMethod: 'U',
              minimumValue: '0'
    }"/>

The library supports also reactive forms.


Customize autonumeric defaults

You can override autonumeric default by providing default configuration:

import { AutonumericModule } from '@angularfy/autonumeric';

@NgModule({
  //...
  imports: [
            AutonumericModule.forRoot({
                    // user defaults here
            }), // ...
        ],
  //...
})
export class YourAppModule {
}

You can also use providers to achieve this :

const userDefaults :AutonumericOptions= {
// default options
}
export function defaultsFactory(userDefaults: AutonumericOptions): AutonumericDefaults {
    const defaults: AutonumericDefaults = new AutonumericDefaults();
    Object.assign(defaults, userDefaults);
    return defaults;
}
@NgModule({
  imports: [AutonumericModule],
  providers: [{
                       provide: USER_DEFAULTS,
                       useValue: userDefaults
               },
               {
                       provide: AutonumericDefaults,
                       useFactory: defaultsFactory,
                       deps: [USER_DEFAULTS]
               }]
})
export class YourAppModule {
}

Supported events

Alongside with native events, autonumeric emits two events : formatted, rawValueModified, those events are bubbled from the native library. Please refer to official docs for more details

<input options="French" autonumeric [(ngModel)]="myModel" (change)="onChange($event)" (formatted)="onFormat($event)" (rawValueModified)="onValueUpdate($event) />

If you want to keep your ngModel synchronized please use two-way binding otherwise, you can capture the change or format event. (format is more verbose, happens every time the input visually changes, the change event in the other hand, is triggered only when the user types something and leaves the input.)

Readonly mode

you can use the component in a reardonly mode :

<span
    [(ngModdel)]="myValue" autonumeric [options]="myOptions">
</span>

you can also use an input with {..., readOnly : true } in options.

Styling

we are agnostic about how the input should be styled. you can define your own style rules

input[autonumeric],span[autonumeric] {
    text-align:right;
}

Integration with other scripts & events support

If some reason you need to access the native autonumeric instance, you can reference your element using @ViewChild.

<input options="French" autonumeric #myNumericField  />

in your component :

 @ViewChild('myNumericField', { static: true })
 myNumericField:AutonumericDirective;

...
reset(){
    this.myNumericField.instance.reset();
}
set(val:any){
    this.myNumericField.instance.set(val);
}

...

Demo

The official AutoNumeric documentation

Requirements

Browser support

This supports the same browsers than AutoNumeric supports:

  • Firefox and
  • Chrome

(latest 2 versions) If you use IE/Edge/Safari/Opera, this might work ;)

What's next ?

I will be working on supporting more AutoNumeric options. If you have any suggestions please feel free to reach by email bellow.

Greetings

This project is hugely inspired from vue-js implementtation of AutoNumeric by Alexandre Bonneau

Support

As always, if you find this useful, please consider supporting its development! Huge Thanks :)

License

@angularfy/autonumeric is open-source and released under the MIT License

PS: I would love to know how you're using @angularfy/autonumeric. Contact and tell me!, abdelghani@ainouss.fr :)