UNPKG

ng-gregorian-hijri-datepicker

Version:

* Lightweight **Angular** datepicker based on [ng-bootstrap](https://ng-bootstrap.github.io/#/components/datepicker/overview) that supports **Gregorian** and **Hijri** calendars. * Provides ability to swap between **Gregorian** and **Hijri** calendars *

114 lines (80 loc) 4.32 kB
# Hijri Gregorian Datepicker * Lightweight **Angular** datepicker based on [ng-bootstrap](https://ng-bootstrap.github.io/#/components/datepicker/overview) that supports **Gregorian** and **Hijri** calendars. * Provides ability to swap between **Gregorian** and **Hijri** calendars * Converting selected date back and forth when changing calendar type. * Provides service `DateFormatterService` to help converting date formats in both calendars types. * It is developed using `Angular >=7.0.0` and its newly introduced `ng g library` schematics. * This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 7.3.9. ## Development server Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. ## Features * Easy to switch between **Gregorian** and **Hijri** calendars. * Ability to specify the default calendar type either **Gregorian** or **Hijri**. * Converting dates when changing type of calendar. * Ability to specify min and max value for **Gregorian** and **Hijri**. * Ability to make it required , readonly or disabled. ## Installation >npm i ng-gregorian-hijri-datepicker ## API >import { NgxHijriGregorianDatepickerModule } from 'ng-gregorian-hijri-datepicker'; ## @Inputs() | Input| Type| Required| Description | |--|--|--| -- | |selectedDateType|DateType|No| Default calendar type , will be **hijri** if not sepcified. | |selectedDate|NgbDateStruct|No| Date to bind (two way binding). | |label|string|Yes| Label will be shown besides the input. | |readonly|bool|No| Specify if user can write in input manually without selecting from datepicker. | |isRequired|bool|No| Specify required or not field. | |disabled|bool|No| Specify disabled or not. | |minHijri|NgbDateStruct|No| Minimum allowed **hijri** date to select. | |maxHijri|NgbDateStruct|No| Maximum allowed **hijri** date to select. | |minGreg|NgbDateStruct|No| Minimum allowed **Gregorian** date to select. | |maxGreg|NgbDateStruct|No| Maximum allowed **Gregorian** date to select. | |hijriLabel|string|No| Label for Hijri button , will be 'Hijri' By Default. | |GregLabel|string|No| Label for Gregorian button , will be 'Gregorian' By Default. | ## @Outputs() | Output| Type| Required| Description | |--|--|--| -- | |selectedDateChange|EventEmitter of NgbDateStruct |--| Emitted after selecting date from picker. | ## Dependencies Make sure that `@ng-bootstrap/ng-bootstrap` and `bootstrap` with appropriate versions to angular 7. ## Usage 1. Install the package `npm i ng-gregorian-hijri-datepicker` . 2. Import the `NgxHijriGregorianDatepickerModule` in your app module `import { NgxHijriGregorianDatepickerModule } from 'ng-gregorian-hijri-datepicker';` 3. In template ``` <hijri-gregorian-datepicker [label]="'Birth Date'" [(selectedDate)]="selectedDate" [isRequired]="true" [GregLabel]="'Gregorian'" [hijriLabel] ="'Hijri'" [selectedDateType]="selectedDateType" #datePicker> </hijri-gregorian-datepicker>` ``` 4. In typescript file ``` import { NgbDate } from '@ng-bootstrap/ng-bootstrap'; import { DateType } from 'ng-gregorian-hijri-datepicker'; @Component({...}) export class AppComponent { date: NgbDate; selectedDateType = DateType.Hijri; // or DateType.Gregorian constructor() {} } ``` ## Utilities > **DateFormatterService** | Method| Parameter | Return| Description | |--|--|--| -- | |ToGregorianDateStruct()|gregorianDate: string, format:string|NgbDate|Convert string gregorian date to date struct. | |ToHijriDateStruct()|hijriDate:string, format:string|NgbDate| Convert string hijri date to date struct. | |ToHijri(date)|NgbDateStruct|NgbDateStruct| Convert Gregorian date struct to Hijri struct. | |ToGregorian(date)|NgbDateStruct|NgbDateStruct|Convert Hijri date struct to Gregorian struct.| |ToString(date)|NgbDateStruct|string|Convert date struct to string `dd/mm/yyyy`| |GetTodayHijri()|--|NgbDateStruct|Get Today's date as hijri.| |GetTodayGregorian()|--|NgbDateStruct|Get Today's date as gregorian.| ## Credits This project is based on [ng-bootstrap](https://ng-bootstrap.github.io/#/components/datepicker/overview) , [moment](https://momentjs.com/) , [moment Hijri](https://github.com/xsoh/moment-hijri) .