Code Monkey home page Code Monkey logo

ng4-intl-phone's Introduction

Angular international phone prefix input

Demo

https://ng4-intl-phone.netlify.app/

Description

This is a simple library with international phone prefix with flags images.

Donating

You can also help me and the project out by contributing through a donation on PayPal.

PayPal

Installation

To install this component to an external project, follow the procedure:

  1. npm install ng4-intl-phone --save

  2. Add InternationalPhoneModule import to your @NgModule like example below

    import { NgModule } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    import { MyTestApp } from './my-test-app';
    import { InternationalPhoneModule } from 'ng4-intl-phone';
    @NgModule({
        imports:      [ BrowserModule, InternationalPhoneModule ],
        declarations: [ MyTestApp ],
        bootstrap:    [ MyTestApp ]
    })
    export class MyTestAppModule {}

    ##Testing in localhost

  • npm install ./relative/path/to/lib after npm run build to test locally in another app

Usage

Use one of the following two options.

1. ngModel binding

In this option the ngModel binding is used.

```html
<h1>
  {{title}}
</h1>
<div class="row">
  <div class="col-md-2">
    <int-phone-prefix [(ngModel)]="phoneNumber"></int-phone-prefix>

  </div>
</div>
```

2. Reactive forms

In this option the value accessor of reactive forms is used.

To use reactive forms define the application class as follows:

```ts

export class MyTestApp implements OnInit {

    private myForm: FormGroup;

    constructor(private formBuilder: FormBuilder) { }

    ngOnInit() {
        this.myForm = this.formBuilder.group({
            myPhone: ['', Validators.required]
            // other controls are here...
        });
    }
}
```

Add the following snippet inside your template:

```html
<form [formGroup]="myForm" novalidate>
    <int-phone-prefix [locale]="'es'"
                    formControlName="myPhone"></int-phone-prefix>
  <!-- other controls are here... -->
</form>
```

@Input() locale

An ISO 639-1 language code can be provided to set available language: es: Spanish, en: English

@Input() defaultCountry

   An ISO 639-1 country code can be provided to set default country selected.

@Input() maxLength

      maxLength (default: 15)

@Input() onlyNumbers

     Allows only numeric values (default: true)

License

  • License: MIT

Author

  • Author: kondi0

Mail

Keywords

  • Phone
  • Prefix
  • International
  • Angular2
  • Angular4

ng4-intl-phone's People

Contributors

kondi0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ng4-intl-phone's Issues

aot compilation reveals encapsulation issues

ERROR in ng:///.../node_modules/ng4-intl-phone/ng4-intl-phone.d.ts.IntPhonePrefixComponent.html (2,836): Property 'phoneInput' is private and only accessible within class 'IntPhonePrefixComponent'.

ERROR in /Users/michael...$$_gendir/node_modules/ng4-intl-phone/ng4-intl-phone.ngfactory.ts (478,30): Property 'selectedCountry' is private and only accessible within class 'IntPhonePrefixComponent'.

ERROR in ng:///.../node_modules/ng4-intl-phone/ng4-intl-phone.d.ts.IntPhonePrefixComponent.html (2,147): Property 'selectedCountry' is private and only accessible within class 'IntPhonePrefixComponent'.

ERROR in ng:///.../node_modules/ng4-intl-phone/ng4-intl-phone.d.ts.IntPhonePrefixComponent.html (2,238): Property 'showDropdown' is private and only accessible within class 'IntPhonePrefixComponent'.

ERROR in ng:///.../node_modules/ng4-intl-phone/ng4-intl-phone.d.ts.IntPhonePrefixComponent.html (2,775): Property 'phoneInput' is private and only accessible within class 'IntPhonePrefixComponent'.

how to disable control?

I don't see a way to disable control.
Expected behavior:
If I add it to my form group, I expect on form.disable() I'll get it disabled as well.
Actual result:
control is not disabled

How do I set [readonly] property for the input?

Do we have an option to use [readonly] in this package? please let me know if there is any customize required for it.?

<int-phone-prefix defaultCountry="us" displayLabel=false [maxlength]="maxlength" locale="en"
formControlName="phoneNumber" [(ngModel)]="phoneNumberModel" required="true"[readonly]="isReadonly()">

Thanks,
Swamy
[email protected]

Consider removing lodash as a dependency

Lodash is a quite big dependency and this library is only using _.isEmpty and _.sortBy. This makes the bundle unnecesarily big.
Please consider adding lodash.isEmpty and lodash.sortBy as dependencies and use those instead.

placeholder option

I would like to have a placeholder for input field. How can I do that?

Default county overrides country of initial value

When I set the default country while I have an existing value in formControl, the input will change the country of the number to the default country. This should not happen, it should only provide the default country when ngModel/formControl has no value.

umd bundle as main in package.json is unavailable

in package.json

{
   "name": "ng4-intl-phone",
    "version": "1.2.1",
    "description": "International phone prefix library for Angular 2 & 4",
    "main": "./ng4-intl-phone.umd.js",
    ....
}

file ./ng4-intl-phone.umd.js is not generated. This should be changed to ./ng4-intl-phone.js.

This is required for compatibility with ivy otherwise ng build will through error

update to angular 6.x required

Hi,
Could you please update the relevant dependencies to angular 6.x?

My app is complaining now that I updated to angular 6.

Cheers

How do I set an ID for the input?

I'm trying to attach a label to this for accessibility so we need to be able to set the ID of the input the int-phone-prefix is producing. Ideally, something that would work like this:

    <div [formGroup]="form">
      <label for="input-{{_data.mappedId}}">{{label}}</label>
      <int-phone-prefix [locale]="'es'" [formControlName]="_data.mappedId" id="input-{{_data.mappedId}}"></int-phone-prefix>
    </div>`

Missing phone codes

Austria phone code is missing, also the Vatican flag is displayed instead of Italian when you enter Italy phone code.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.