Skip to content

Commit ee54b8f

Browse files
author
Matt Lewis
committed
feat: add CalendarModule.forRoot so providers dont need to be specified
1 parent 740eeec commit ee54b8f

File tree

3 files changed

+44
-9
lines changed

3 files changed

+44
-9
lines changed

demo/demo.module.ts

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
import { NgModule } from '@angular/core';
22
import { BrowserModule } from '@angular/platform-browser';
33
// import should be from `angular2-calendar` in your app
4-
import { CalendarModule, CalendarEventTitle, CalendarDateFormatter } from './../src';
4+
import { CalendarModule } from './../src';
55
import { DemoComponent } from './demo.component';
66

77
@NgModule({
88
declarations: [DemoComponent],
9-
imports: [BrowserModule, CalendarModule],
10-
bootstrap: [DemoComponent],
11-
providers: [
12-
CalendarEventTitle,
13-
CalendarDateFormatter
14-
]
9+
imports: [
10+
BrowserModule,
11+
CalendarModule.forRoot()
12+
],
13+
bootstrap: [DemoComponent]
1514
})
1615
export class DemoModule {}

src/calendar.module.ts

+16-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { NgModule } from '@angular/core';
1+
import { NgModule, ModuleWithProviders } from '@angular/core';
22
import { CommonModule } from '@angular/common';
33
import { CalendarDayViewComponent } from './components/day/calendarDayView.component';
44
import { CalendarWeekViewComponent } from './components/week/calendarWeekView.component';
@@ -15,6 +15,8 @@ import { CalendarDayViewEventComponent } from './components/day/calendarDayViewE
1515
import { CalendarTooltipWindowComponent, CalendarTooltipDirective } from './directives/calendarTooltip.directive';
1616
import { CalendarDate } from './pipes/calendarDate.pipe';
1717
import { CalendarEventTitle as CalendarEventTitlePipe } from './pipes/calendarEventTitle.pipe';
18+
import { CalendarEventTitle as CalendarEventTitleProvider } from './providers/calendarEventTitle.provider';
19+
import { CalendarDateFormatter } from './providers/calendarDateFormatter.provider';
1820

1921
@NgModule({
2022
declarations: [
@@ -39,4 +41,16 @@ import { CalendarEventTitle as CalendarEventTitlePipe } from './pipes/calendarEv
3941
exports: [CalendarDayViewComponent, CalendarWeekViewComponent, CalendarMonthViewComponent, CalendarDate],
4042
entryComponents: [CalendarTooltipWindowComponent]
4143
})
42-
export class CalendarModule {}
44+
export class CalendarModule {
45+
46+
static forRoot(): ModuleWithProviders {
47+
return {
48+
ngModule: CalendarModule,
49+
providers: [
50+
CalendarEventTitleProvider,
51+
CalendarDateFormatter
52+
]
53+
};
54+
}
55+
56+
}

test/calendarModule.spec.ts

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import {
2+
inject,
3+
TestBed
4+
} from '@angular/core/testing';
5+
import { expect } from 'chai';
6+
import {
7+
CalendarModule,
8+
CalendarDateFormatter
9+
} from './../src';
10+
11+
describe('calendar module', () => {
12+
13+
beforeEach(() => {
14+
TestBed.configureTestingModule({imports: [CalendarModule.forRoot()]});
15+
});
16+
17+
it('should not require providers to be specified when using CalendarModule.forRoot()',
18+
inject([CalendarDateFormatter], (dateFormatter) => {
19+
expect(dateFormatter instanceof CalendarDateFormatter).to.be.true;
20+
}));
21+
22+
});

0 commit comments

Comments
 (0)