npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@bcodes/ngx-routerlink-delay

v2.0.0

Published

Extension of the Angular RouterLinkWithHref directive a[routerLink] with an additional @Input data binding for delaying navigation

Downloads

42

Readme

Build Status Build with Angular CLI

@bcodes/ngx-routerlink-delay

Extension of the RouterLinkWithHref directive a[routerLink] with an additional @Input data binding for delaying navigation

Packaged as an Angular module using ng-packagr

Development project generated with Angular CLI

Usage

npm install @bcodes/ngx-routerlink-delay

To use the extended routerLink directive, import the module:

import { RouterLinkDelayModule } from '@bcodes/ngx-routerlink-delay';

Replace the default routerLink and routerLinkActive selectors with the extended ones:

  • routerLink -> bcRouterLink
  • routerLinkActive -> bcRouterLinkActive

The navigation delay @Input is in milliseconds:

  • [navigationDelay]="1000"

Example

app.component.html

<div>
    <a [bcRouterLink]="['/page-one']" bcRouterLinkActive="active" [navigationDelay]="1000">
        Page One
    </a>
    <a bcRouterLink="/page-two" bcRouterLinkActive="active" [navigationDelay]="2000">
        Page Two
    </a>
    <router-outlet></router-outlet>
</div>

app.module.ts

import { AppComponent } from './app.component';

import { RouterLinkDelayModule } from '@bcodes/ngx-routerlink-delay';
import { PageOneComponent } from './pages/page-one/page-one.component';
import { PageTwoComponent } from './pages/page-two/page-two.component';

@NgModule({
    declarations: [
        AppComponent,
        PageOneComponent,
        PageTwoComponent
    ],
    imports: [
        BrowserModule,
        AppRoutingModule,
        RouterLinkDelayModule
    ],
    providers: [],
    bootstrap: [AppComponent]
})
export class AppModule { }

Why bcRouterLinkActive? Internally routerLinkActive queries the template using the type of the routerLink directive i.e. RouterLinkWithHref. Extending routerLink meant we also had to extend routerLinkActive to query for the new type

Library Development: Build, Run, Test

Build the library

  • npm run build:lib

This will create a dist/lib folder with generated Angular module for distribution

Live Reload

The library source (lib/src) is located alongside a ready-to-run Angular ClI project. The library module has been imported in app.module.ts, and is ready to roll as is. The project can be served with ng serve, and any changes made to the the directive source files in lib/src will trigger a live reload

Symbolic npm link

For testing the bundled module locally, you can use npm link. You will firstly need to replace the import in app.module.ts as follows:

import { RouterLinkDelayModule } from '../../lib/src/router-link-delay.module';
// replace with 
import { RouterLinkDelayModule } from '@bcodes/ngx-routerlink-delay';

From the dist/lib folder run:

  • npm link

In the application root e.g. ngx-routerlink-delay folder, run:

  • npm link @bcodes/ngx-routerlink-delay

Run

  • ng serve or
  • ng serve --preserve-symlinks

Testing

The tests are contained in the lib/test folder. The files to be tested are imported from the dist/lib folder, so we are testing the bundled library

The test files are located outside of the root src folder and required the following changes to the test setup:

tsconfig.spec.json

tsconfig.spec.json

"include": [
    "../lib/**/*.spec.ts",
    "**/*.spec.ts",
    "**/*.d.ts"
  ]

tests.ts

const context_lib = require.context('../lib', true, /\.spec\.ts$/);
context_lib.keys().map(context_lib);

Run the tests with ng test, or npm run test:lib to do a build and test

License

This project is licensed under the terms of the MIT license