English is not my native language; please excuse typing errors. 中文文档
- Support date range.
- Support multi date.
- Support HTML components.
- Disable weekdays or weekends.
- Setting days event.
- Setting localization.
- Material design.
- ionic-angular
^3.0.0
live demo click me.
$ npm install ion2-calendar moment --save
import{NgModule}from'@angular/core';import{IonicApp,IonicModule}from'ionic-angular';import{MyApp}from'./app.component';
...
import{CalendarModule}from"ion2-calendar";
@NgModule({declarations: [MyApp,
...
],imports: [IonicModule.forRoot(MyApp),CalendarModule],bootstrap: [IonicApp],entryComponents: [MyApp,
...
]})exportclassAppModule{}<ion-calendar[(ngModel)]="date"
(onChange)="onChange($event)"
[type]="type"
[format]="'YYYY-MM-DD'"></ion-calendar>import{Component}from'@angular/core';
@Component({selector: 'page-home',templateUrl: 'home.html'})exportclassHomePage{date: string;type: 'string';// 'string' | 'js-date' | 'moment' | 'time' | 'object'constructor(){}onChange($event){console.log($event);}
...
}<ion-calendar[(ngModel)]="dateRange"
[options]="optionsRange"
[type]="type"
[format]="'YYYY-MM-DD'"></ion-calendar>import{Component}from'@angular/core';import{CalendarComponentOptions}from'ion2-calendar'
@Component({selector: 'page-home',templateUrl: 'home.html'})exportclassHomePage{dateRange: {from: string;to: string;};type: 'string';// 'string' | 'js-date' | 'moment' | 'time' | 'object'optionsRange: CalendarComponentOptions={pickMode: 'range'};constructor(){}
...
}<ion-calendar[(ngModel)]="dateMulti"
[options]="optionsMulti"
[type]="type"
[format]="'YYYY-MM-DD'"></ion-calendar>import{Component}from'@angular/core';import{CalendarComponentOptions}from'ion2-calendar'
@Component({selector: 'page-home',templateUrl: 'home.html'})exportclassHomePage{dateMulti: string[];type: 'string';// 'string' | 'js-date' | 'moment' | 'time' | 'object'optionsMulti: CalendarComponentOptions={pickMode: 'multi'};constructor(){}
...
}| Name | Type | Default | Description |
|---|---|---|---|
| options | CalendarComponentOptions | null | options |
| format | string | 'YYYY-MM-DD' | value format |
| type | string | 'string' | value type |
| readonly | boolean | false | readonly |
| Name | Type | Description |
|---|---|---|
| onChange | EventEmitter | event for model change |
| monthChange | EventEmitter | event for month change |
| onSelect | EventEmitter | event for click day-button |
| onSelectStart | EventEmitter | event for click day-button |
| onSelectEnd | EventEmitter | event for click day-button |
| Name | Type | Default | Description |
|---|---|---|---|
| from | Date | new Date() | start date |
| to | Date | 0 (Infinite) | end date |
| color | string | 'primary' | 'primary', 'secondary', 'danger', 'light', 'dark' |
| pickMode | string | single | 'multi', 'range', 'single' |
| showToggleButtons | boolean | true | show toggle buttons |
| showMonthPicker | boolean | true | show month picker |
| monthPickerFormat | Array | ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'] | month picker format |
| defaultTitle | string | '' | default title in days |
| defaultSubtitle | string | '' | default subtitle in days |
| disableWeeks | Array | [] | week to be disabled (0-6) |
| monthFormat | string | 'MMM YYYY' | month title format |
| weekdays | Array | ['S', 'M', 'T', 'W', 'T', 'F', 'S'] | weeks text |
| weekStart | number | 0 (0 or 1) | set week start day |
| daysConfig | Array<DaysConfig> | [] | days configuration |
Import ion2-calendar in component controller.
import{Component}from'@angular/core';import{ModalController}from'ionic-angular';import{CalendarModal,CalendarModalOptions,DayConfig,CalendarResult}from"ion2-calendar";
@Component({selector: 'page-home',templateUrl: 'home.html'})exportclassHomePage{constructor(publicmodalCtrl: ModalController,){}openCalendar(){constoptions: CalendarModalOptions={title: 'BASIC',};letmyCalendar=this.modalCtrl.create(CalendarModal,{options: options});myCalendar.present();myCalendar.onDidDismiss((date: CalendarResult,type: string)=>{console.log(date);})}}Set pickMode to 'range'.
openCalendar(){constoptions: CalendarModalOptions={pickMode: 'range',title: 'RANGE'};letmyCalendar=this.modalCtrl.create(CalendarModal,{options: options});myCalendar.present();myCalendar.onDidDismiss((date: {from: CalendarResult;to: CalendarResult},type: string)=>{console.log(date);});}Set pickMode to 'multi'.
openCalendar(){constoptions={pickMode: 'multi',title: 'MULTI'};letmyCalendar=this.modalCtrl.create(CalendarModal,{options: options});myCalendar.present();myCalendar.onDidDismiss((date: CalendarResult[],type: string)=>{console.log(date);})}Use index eg: [0, 6] denote Sunday and Saturday.
openCalendar(){constoptions: CalendarModalOptions={disableWeeks: [0,6]};letmyCalendar=this.modalCtrl.create(CalendarModal,{options: options});myCalendar.present();myCalendar.onDidDismiss((date: CalendarResult,type: string)=>{console.log(date);});}your root module
import{NgModule,LOCALE_ID}from'@angular/core';
...
@NgModule({
...
providers: [{provide: LOCALE_ID,useValue: "zh-CN"}]})
...openCalendar(){constoptions: CalendarModalOptions={monthFormat: 'YYYY 年 MM 月 ',weekdays: ['天','一','二','三','四','五','六'],weekStart: 1,defaultDate: newDate()};letmyCalendar=this.modalCtrl.create(CalendarModal,{options: options});myCalendar.present();myCalendar.onDidDismiss((date: CalendarResult,type: string)=>{console.log(date);});}Configure one day.
openCalendar(){let_daysConfig: DayConfig[]=[];for(leti=0;i<31;i++){_daysConfig.push({date: newDate(2017,0,i+1),subTitle: `$${i+1}`})}constoptions: CalendarModalOptions={from: newDate(2017,0,1),to: newDate(2017,11.1),daysConfig: _daysConfig};letmyCalendar=this.modalCtrl.create(CalendarModal,{options: options});myCalendar.present();myCalendar.onDidDismiss((date: CalendarResult,type: string)=>{console.log(date);});}| Name | Type | Default | Description |
|---|---|---|---|
| from | Date | new Date() | start date |
| to | Date | 0 (Infinite) | end date |
| title | string | 'CALENDAR' | title |
| color | string | 'primary' | 'primary', 'secondary', 'danger', 'light', 'dark' |
| defaultScrollTo | Date | none | let the view scroll to the default date |
| defaultDate | Date | none | default date data, apply to single |
| defaultDates | Array | none | default dates data, apply to multi |
| defaultDateRange | { from: Date, to: Date } | none | default date-range data, apply to range |
| defaultTitle | string | '' | default title in days |
| defaultSubtitle | string | '' | default subtitle in days |
| cssClass | string | '' | Additional classes for custom styles, separated by spaces. |
| canBackwardsSelected | boolean | false | can backwards selected |
| pickMode | string | single | 'multi', 'range', 'single' |
| disableWeeks | Array | [] | week to be disabled (0-6) |
| closeLabel | string | CANCEL | cancel button label |
| doneLabel | string | DONE | done button label |
| closeIcon | boolean | false | show cancel button icon |
| doneIcon | boolean | false | show done button icon |
| monthFormat | string | 'MMM YYYY' | month title format |
| weekdays | Array | ['S', 'M', 'T', 'W', 'T', 'F', 'S'] | weeks text |
| weekStart | number | 0 (0 or 1) | set week start day |
| daysConfig | Array<DaysConfig> | [] | days configuration |
| pickMode | Type |
|---|---|
| single | { date: CalendarResult } |
| range | { from: CalendarResult, to: CalendarResult } |
| multi | Array<CalendarResult> |
| Value | Description |
|---|---|
| 'cancel' | dismissed by click the cancel button |
| 'done' | dismissed by click the done button |
| 'backdrop' | dismissed by click the backdrop |
| Name | Type | Default | Description |
|---|---|---|---|
| cssClass | string | '' | separated by spaces |
| date | Date | required | configured days |
| marked | boolean | false | highlight color |
| disable | boolean | false | disable |
| title | string | none | displayed title eg: 'today' |
| subTitle | string | none | subTitle subTitle eg: 'New Year\'s' |
| Name | Type |
|---|---|
| time | number |
| unix | number |
| dateObj | Date |
| string | string |
| years | number |
| months | number |
| date | number |

