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 🙏

© 2026 – Pkg Stats / Ryan Hefner

ngx-primeng-phone-input

v1.0.2

Published

Angular phone input with PrimeNG UI, country picker, and libphonenumber-js validation

Readme

ngx-primeng-phone-input

Created by Abhishek Rana

Angular phone input built natively for PrimeNG — with country picker, libphonenumber-js validation, and Reactive Forms support.

Install

npm install ngx-primeng-phone-input libphonenumber-js primeng

Install a PrimeNG theme package matching your Angular major version (e.g. @primeng/themes for PrimeNG 19–21).

Compatibility

| Consumer Angular | Required PrimeNG | This library | |------------------|------------------|--------------| | 19.x | 19.x | 1.x | | 20.x | 20.x | 1.x | | 21.x | 21.x | 1.x |

Rule: Use the same major version for Angular and PrimeNG (e.g. Angular 20 + PrimeNG 20).

Peer dependencies

  • @angular/common >= 19
  • @angular/core >= 19
  • @angular/forms >= 19
  • primeng >= 19
  • libphonenumber-js >= 1.10

Usage

import { Component } from '@angular/core';
import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
import { InputText } from 'primeng/inputtext';
import {
  PhoneInputComponent,
  phoneValidator,
} from 'ngx-primeng-phone-input';

@Component({
  standalone: true,
  imports: [ReactiveFormsModule, InputText, PhoneInputComponent],
  template: `
    <ngx-phone-input
      pInputText
      fluid
      [defaultCountryIso]="'IN'"
      [phoneValidation]="true"
      [formControl]="phoneControl">
    </ngx-phone-input>
  `,
})
export class AppComponent {
  phoneControl = new FormControl(null, [
    Validators.required,
    phoneValidator,
  ]);
}

Apply pInputText on the host element so PrimeNG styles the field like a standard text input.

Reactive Forms validator

import { phoneValidator } from 'ngx-primeng-phone-input';

phone = new FormControl(null, [Validators.required, phoneValidator]);

Output value shape

interface PhoneInputValue {
  country: Country;
  number: string;
  internationalNumber: string;
  e164: string;
  e164Number: string; // alias of e164 (ngx-intl-tel-input compat)
}

Use e164 in API payloads.

Inputs

| Input | Type | Default | Description | |-------|------|---------|-------------| | defaultCountryIso | string | 'KW' | Pre-selected country ISO2 | | preferredCountryIsos | string[] | GCC + IN | Countries pinned at top | | placeholder | string | '' | Custom placeholder | | maxLength | number | per-country | Max digit cap | | phoneValidation | boolean | false | Enable inline validation | | enableFormatting | boolean | false | AsYouType formatting | | inputClass | string | '' | Extra classes on inner input | | name | string | '' | name attribute | | autocomplete | string | 'off' | autocomplete attribute | | searchCountryFlag | boolean | true | Show search box | | enablePlaceholder | boolean | true | Show placeholder | | selectFirstCountry | boolean | false | Auto-highlight first result | | enableAutoCountrySelect | boolean | false | Auto-detect country from digits | | lang | string | 'en' | Language for country names | | searchPlaceholder | string | 'Search country...' | Search input placeholder | | noCountriesText | string | 'No countries found' | Empty state text |

Features

  • PrimeNG-native styling via pInputText and CSS design tokens
  • Dark mode support (.p-dark or [data-p-theme='dark'])
  • GCC-region aware preferred countries (Kuwait, UAE, Saudi, Bahrain, Qatar, Oman, India)
  • libphonenumber-js validation — no stale regex
  • ControlValueAccessor — works with Reactive Forms and ngModel
  • Standalone Angular component (19+)

License

MIT