13.1.0 • Published 2 years ago

ngx-countup v13.1.0

Weekly downloads
2,008
License
MIT
Repository
github
Last release
2 years ago

CountUp.js Angular ^2 Module

This is an Angular directive wrapper around the core functionality of CountUp which is maintained in the CountUp.js repo. MIT License.

CountUp.js demo

Or see this angular version work by cloning this project and running ng serve.

Usage

Install the package in your project:

yarn add ngx-countup or npm i ngx-countup

In app.module.ts, import the module:

import { CountUpModule } from 'ngx-countup';

@NgModule({
  imports: [
    ...
    CountUpModule
  ],
  ...
})

Use it in your markup. Since it's a directive, it can be added to any element:

<h1 [countUp]="345" (complete)="doSomethingOnComplete()">0</h1>

Defer animation

Bind the endVal to some property. Leave it undefined and the animation won't start until endVal has a value.

<h1 [countUp]="myEndVal" [options]="myOpts">0</h1>

Inputs:

  • countUp: number to count to
  • options: CountUpOptions - fine-grain control over CountUp
  • reanimateOnClick: pass false to disable (defaults to true)

Outputs:

  • complete: emits when the animation completes

Testing

The test app in this repo has a passing test for a component that uses the CountUp directive, which you can use as an example. If your component uses the CountUp directive, include the CountUpModule in your TestBed:

beforeEach(async(() => {
  TestBed.configureTestingModule({
    imports: [
      CountUpModule,
      ...
    ],
    ...
  })
});

For Jest, I used jest-preset-angular. Make sure you have the following in your jest.config.js:

transform: {
  '^.+\\.(js|ts|tsx)$': 'ts-jest'
},
transformIgnorePatterns: ['node_modules/(?!countup.js)']

And make sure you add this under compilerOptions in your root tsconfig.json:

"allowJs": true,

Contributing

Before you make a pull request, please follow these instructions:

  1. Make your edits to ./projects/count-up/src/lib/count-up.directive.ts.
  2. Run ng s and test your changes in the demo app.

Publishing (you don't need to do this, its for my own reference):

  1. Increment the version number if necessary (and install-tarball script).
  2. Commit changes.
  3. Run yarn package:countup which builds and packs a tarball.
  4. Install the tarball in the test app: yarn install-tarball.
  5. Make app.module import from newly installed package.
  6. Run the test app with AOT compiler and make sure the demo works: ng serve --prod.
  7. Run npm publish dist/count-up
  8. Discard changes.