UNPKG

ngx-typed-js

Version:

An Angular integration for [Typed.js](https://github.com/mattboldt/typed.js/).

128 lines (98 loc) 8.43 kB
# ngx-typed-js An Angular integration for [Typed.js](https://github.com/mattboldt/typed.js/). Typed.js is a library that types. Enter in any string, and watch it type at the speed you've set, backspace what it's typed, and begin a new sentence for however many strings you've set. [![NPM](https://nodei.co/npm/ngx-typed-js.png)](https://nodei.co/npm/ngx-typed-js/) [Live demo](https://vlad.vidac.software/) - [Source code](https://github.com/thevladeffect/portfolio) ## Table of contents - [Installation](#installation) - [Usage](#usage) - [Example](#examples) # Installation ``` npm install --save ngx-typed-js ``` ## Import in your module ```javascript import {NgxTypedJsModule} from 'ngx-typed-js'; @NgModule({ imports: [ NgxTypedJsModule, ], }) export class AppModule { } ``` # Usage To start using it add the `ngx-typed-js` component to your template and pass the text, which should be typed to the `strings` input. In addition you need to pass an element with the class `typing` to the component tag. ```html <ngx-typed-js [strings]="['Bananas are awesome', 'Nobody can argue this fact.']"> <h1 class="typing"></h1> </ngx-typed-js> ``` The `typing` class also allows you to just animate certain parts of a string: ```html <ngx-typed-js [strings]="['amazing.', 'yellow.', 'delicious.']" [shuffle]="true" [typeSpeed]="40"> Bananas are <span class="typing"></span> </ngx-typed-js> ``` ## Accessing methods exposed by vanilla Typed.js You can access the methods on your `Typed` object by using a `@ViewChild` decorator: ```javascript @ViewChild(NgxTypedJsComponent) typed: NgxTypedJsComponent; ``` ## Properties You can make use of the following properties in order to customize your typing experience: | Property | Type | Description | Usage | |----------------------|---------|----------------------------------------------------------------------|-----------------------------------------------------------------| | strings | Array | strings to be typed | `[strings]="['Text 1', 'Text 2']"` | | stringsElement | String | ID of element containing string children | `[stringsElement]="'myId'"` | | typeSpeed | Number | type speed in milliseconds | `[typeSpeed]="50"` | | startDelay | Number | time before typing starts in milliseconds | `[startDelay]="1000"` | | backSpeed | Number | backspacing speed in milliseconds | `[backSpeed]="10"` | | smartBackspace | Boolean | only backspace what doesn't match the previous string | `[smartBackspace]="true"` | | shuffle | Boolean | shuffle the strings | `[shuffle]="true"` | | backDelay | Number | time before backspacing in milliseconds | `[backDelay]="100"` | | fadeOut | Boolean | Fade out instead of backspace | `[fadeOut]="true"` | | fadeOutClass | String | css class for fade animation | `[fadeOutClass]="'fadeOutClass'"` | | fadeOutDelay | Number | fade out delay in milliseconds | `[fadeOutDelay]="100"` | | loop | Boolean | loop strings | `[loop]="true"` | | loopCount | Number | amount of loops | `[loopCount]="3"` | | showCursor | Boolean | show cursor | `[showCursor]="true"` | | cursorChar | String | character for cursor | `[cursorChar]="'_'"` | | autoInsertCss | Boolean | insert CSS for cursor and fadeOut into HTML | `[autoInsertCss]="true"` | | attr | String | attribute for typing Ex: input placeholder, value, or just HTML text | `[attr]="'placeholder'"` | | bindInputFocusEvents | Boolean | bind to focus and blur if el is text input | `[bindInputFocusEvents]="true"` | | contentType | String | 'html' or 'null' for plaintext | `[contentType]="'html'"` | These are the same properties used with vanilla Typed.js. For more information about them check out the original project. In addition to the original properties I have added a new one: `cursorColor`. This takes the value of a CSS color string (e.g. `[color]="red"`, `[color]="#fff"`). By default, the cursor color and size will be set to the values of computed styles of the passed `.typing` element. ## Events You can listen to the following events: | Event | Description | Usage | |------------------------|----------------------------------------------------------------------|-----------------------------------------------------------------| | completed | All typing is complete | `(completed)="doSmth()"` | | preStringTyped | Before each string is typed | `(preStringTyped)="doSmth(indexOfString)"` | | stringTyped | After each string is typed | `(stringTyped)="doSmth(indexOfString)"` | | lastStringBackspaced | During looping, after last string is typed | `(lastStringBackspaced)="doSmth()"` | | typingPaused | Typing has been stopped | `(typingPaused)="doSmth(indexOfString)"` | | typingResumed | Typing has been started after being stopped | `(typingResumed)="doSmth(indexOfString)"` | | reset | After reset | `(reset)="doSmth()"` | | stopped | After stop | `(stopped)="doSmth(indexOfString)"` | | started | After start | `(started)="doSmth(indexOfString)"` | | destroyed | After destroy | `(destroyed)="doSmth()"` | # Examples ```html <!-- infinite loop --> <ngx-typed-js [strings]="['awesome', 'amazing']" [loop]="true" (completed)="doSmth()"> <h2>We are an <span class="typing"></span> company!</h2> </ngx-typed-js> <!-- type pausing --> <ngx-typed-js [strings]="['This is text ^1000 which gets paused for 1 second']"> <h2 class="typing"></h2> </ngx-typed-js> ``` ## Thank you Big thanks to the author of [vue-typed-js](https://github.com/Orlandster/vue-typed-js) from which I inspired heavily and of course to the original author of [Typed.js](https://github.com/mattboldt/typed.js/). Contributions are welcome. # License [MIT](https://opensource.org/licenses/MIT)