Skip to content

Commit e87ae23

Browse files
author
Matt Lewis
committed
feat: add individual month / week / day modules
now you can just import what you need to help reduce bundle size Closes #361
1 parent d3137e6 commit e87ae23

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+258
-155
lines changed

src/calendar.module.ts

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import { NgModule, ModuleWithProviders } from '@angular/core';
2+
import { DraggableHelper } from 'angular-draggable-droppable';
3+
import {
4+
CalendarCommonModule,
5+
CalendarModuleConfig,
6+
CalendarEventTitleFormatter,
7+
CalendarDateFormatter,
8+
CalendarUtils
9+
} from './common/calendar-common.module';
10+
import { CalendarMonthModule } from './month/calendar-month.module';
11+
import { CalendarWeekModule } from './week/calendar-week.module';
12+
import { CalendarDayModule } from './day/calendar-day.module';
13+
14+
export * from './common/calendar-common.module';
15+
export * from './month/calendar-month.module';
16+
export * from './week/calendar-week.module';
17+
export * from './day/calendar-day.module';
18+
19+
/**
20+
* The main module of this library. Example usage:
21+
*
22+
* ```typescript
23+
* import { CalenderModule } from 'angular-calendar';
24+
*
25+
* @NgModule({
26+
* imports: [
27+
* CalenderModule.forRoot()
28+
* ]
29+
* })
30+
* class MyModule {}
31+
* ```
32+
*
33+
*/
34+
@NgModule({
35+
imports: [
36+
CalendarCommonModule,
37+
CalendarMonthModule,
38+
CalendarWeekModule,
39+
CalendarDayModule
40+
],
41+
exports: [
42+
CalendarCommonModule,
43+
CalendarMonthModule,
44+
CalendarWeekModule,
45+
CalendarDayModule
46+
]
47+
})
48+
export class CalendarModule {
49+
static forRoot(config: CalendarModuleConfig = {}): ModuleWithProviders {
50+
return {
51+
ngModule: CalendarModule,
52+
providers: [
53+
DraggableHelper,
54+
config.eventTitleFormatter || CalendarEventTitleFormatter,
55+
config.dateFormatter || CalendarDateFormatter,
56+
config.utils || CalendarUtils
57+
]
58+
};
59+
}
60+
}

src/common/calendar-common.module.ts

+80
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import { ModuleWithProviders, NgModule, Provider } from '@angular/core';
2+
import { CommonModule } from '@angular/common';
3+
import { DraggableHelper } from 'angular-draggable-droppable';
4+
import { CalendarEventActionsComponent } from './calendar-event-actions.component';
5+
import { CalendarEventTitleComponent } from './calendar-event-title.component';
6+
import {
7+
CalendarTooltipDirective,
8+
CalendarTooltipWindowComponent
9+
} from './calendar-tooltip.directive';
10+
import { CalendarPreviousViewDirective } from './calendar-previous-view.directive';
11+
import { CalendarNextViewDirective } from './calendar-next-view.directive';
12+
import { CalendarTodayDirective } from './calendar-today.directive';
13+
import { CalendarDatePipe } from './calendar-date.pipe';
14+
import { CalendarEventTitlePipe } from './calendar-event-title.pipe';
15+
import { ClickDirective } from './click.directive';
16+
import { CalendarEventTitleFormatter } from './calendar-event-title-formatter.provider';
17+
import { CalendarDateFormatter } from './calendar-date-formatter.provider';
18+
import { CalendarUtils } from './calendar-utils.provider';
19+
20+
export interface CalendarModuleConfig {
21+
eventTitleFormatter?: Provider;
22+
dateFormatter?: Provider;
23+
utils?: Provider;
24+
}
25+
26+
export * from './calendar-event-title-formatter.provider';
27+
export * from './calendar-moment-date-formatter.provider';
28+
export * from './calendar-native-date-formatter.provider';
29+
export * from './calendar-date-formatter.provider';
30+
export * from './calendar-utils.provider';
31+
export * from './calendar-date-formatter.interface';
32+
export * from './calendar-event-times-changed-event.interface';
33+
34+
export {
35+
CalendarEvent,
36+
EventAction as CalendarEventAction,
37+
DAYS_OF_WEEK
38+
} from 'calendar-utils';
39+
40+
@NgModule({
41+
declarations: [
42+
CalendarEventActionsComponent,
43+
CalendarEventTitleComponent,
44+
CalendarTooltipWindowComponent,
45+
CalendarTooltipDirective,
46+
CalendarPreviousViewDirective,
47+
CalendarNextViewDirective,
48+
CalendarTodayDirective,
49+
CalendarDatePipe,
50+
CalendarEventTitlePipe,
51+
ClickDirective
52+
],
53+
imports: [CommonModule],
54+
exports: [
55+
CalendarEventActionsComponent,
56+
CalendarEventTitleComponent,
57+
CalendarTooltipWindowComponent,
58+
CalendarTooltipDirective,
59+
CalendarPreviousViewDirective,
60+
CalendarNextViewDirective,
61+
CalendarTodayDirective,
62+
CalendarDatePipe,
63+
CalendarEventTitlePipe,
64+
ClickDirective
65+
],
66+
entryComponents: [CalendarTooltipWindowComponent]
67+
})
68+
export class CalendarCommonModule {
69+
static forRoot(config: CalendarModuleConfig = {}): ModuleWithProviders {
70+
return {
71+
ngModule: CalendarCommonModule,
72+
providers: [
73+
DraggableHelper,
74+
config.eventTitleFormatter || CalendarEventTitleFormatter,
75+
config.dateFormatter || CalendarDateFormatter,
76+
config.utils || CalendarUtils
77+
]
78+
};
79+
}
80+
}

src/pipes/calendar-date.pipe.ts src/common/calendar-date.pipe.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Pipe, PipeTransform, LOCALE_ID, Inject } from '@angular/core';
2-
import { CalendarDateFormatter } from '../providers/calendar-date-formatter.provider';
2+
import { CalendarDateFormatter } from './calendar-date-formatter.provider';
33

44
/**
55
* This pipe is primarily for rendering the current view title. Example usage:

src/pipes/calendar-event-title.pipe.ts src/common/calendar-event-title.pipe.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Pipe, PipeTransform } from '@angular/core';
22
import { CalendarEvent } from 'calendar-utils';
3-
import { CalendarEventTitleFormatter } from '../providers/calendar-event-title-formatter.provider';
3+
import { CalendarEventTitleFormatter } from './calendar-event-title-formatter.provider';
44

55
@Pipe({
66
name: 'calendarEventTitle'

src/providers/calendar-moment-date-formatter.provider.ts src/common/calendar-moment-date-formatter.provider.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { InjectionToken, Inject } from '@angular/core';
22
import {
33
CalendarDateFormatterInterface,
44
DateFormatterParams
5-
} from '../interfaces/calendar-date-formatter.interface';
5+
} from './calendar-date-formatter.interface';
66

77
export const MOMENT: InjectionToken<string> = new InjectionToken('Moment');
88

src/providers/calendar-native-date-formatter.provider.ts src/common/calendar-native-date-formatter.provider.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {
22
CalendarDateFormatterInterface,
33
DateFormatterParams
4-
} from './../interfaces/calendar-date-formatter.interface';
4+
} from './calendar-date-formatter.interface';
55
import getISOWeek from 'date-fns/get_iso_week';
66

77
/**
File renamed without changes.
File renamed without changes.

src/common/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './calendar-common.module';
File renamed without changes.

src/components/day/calendar-day-view.component.ts src/day/calendar-day-view.component.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ import { Subject } from 'rxjs/Subject';
2222
import { Subscription } from 'rxjs/Subscription';
2323
import { ResizeEvent } from 'angular-resizable-element';
2424
import addMinutes from 'date-fns/add_minutes';
25-
import { CalendarDragHelper } from '../../providers/calendar-drag-helper.provider';
26-
import { CalendarResizeHelper } from '../../providers/calendar-resize-helper.provider';
27-
import { CalendarEventTimesChangedEvent } from '../../interfaces/calendar-event-times-changed-event.interface';
28-
import { CalendarUtils } from '../../providers/calendar-utils.provider';
29-
import { validateEvents } from '../../providers/util';
25+
import { CalendarDragHelper } from '../common/calendar-drag-helper.provider';
26+
import { CalendarResizeHelper } from '../common/calendar-resize-helper.provider';
27+
import { CalendarEventTimesChangedEvent } from '../common/calendar-event-times-changed-event.interface';
28+
import { CalendarUtils } from '../common/calendar-utils.provider';
29+
import { validateEvents } from '../common/util';
3030

3131
/**
3232
* @hidden

src/day/calendar-day.module.ts

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { NgModule } from '@angular/core';
2+
import { CommonModule } from '@angular/common';
3+
import { ResizableModule } from 'angular-resizable-element';
4+
import { DragAndDropModule } from 'angular-draggable-droppable';
5+
import { CalendarDayViewComponent } from './calendar-day-view.component';
6+
import { CalendarAllDayEventComponent } from './calendar-all-day-event.component';
7+
import { CalendarDayViewHourSegmentComponent } from './calendar-day-view-hour-segment.component';
8+
import { CalendarDayViewEventComponent } from './calendar-day-view-event.component';
9+
import { CalendarCommonModule } from '../common/calendar-common.module';
10+
11+
export { CalendarDayViewComponent } from './calendar-day-view.component';
12+
13+
@NgModule({
14+
imports: [
15+
CommonModule,
16+
ResizableModule,
17+
DragAndDropModule,
18+
CalendarCommonModule
19+
],
20+
declarations: [
21+
CalendarDayViewComponent,
22+
CalendarAllDayEventComponent,
23+
CalendarDayViewHourSegmentComponent,
24+
CalendarDayViewEventComponent
25+
],
26+
exports: [
27+
CalendarDayViewComponent,
28+
CalendarAllDayEventComponent,
29+
CalendarDayViewHourSegmentComponent,
30+
CalendarDayViewEventComponent
31+
]
32+
})
33+
export class CalendarDayModule {}

src/day/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './calendar-day.module';

src/index.ts

+1-20
Original file line numberDiff line numberDiff line change
@@ -1,20 +1 @@
1-
export * from './providers/calendar-event-title-formatter.provider';
2-
export * from './providers/calendar-moment-date-formatter.provider';
3-
export * from './providers/calendar-native-date-formatter.provider';
4-
export * from './providers/calendar-date-formatter.provider';
5-
export * from './providers/calendar-utils.provider';
6-
export * from './interfaces/calendar-date-formatter.interface';
7-
export * from './interfaces/calendar-event-times-changed-event.interface';
8-
export * from './modules/calendar';
9-
export * from './components/day/calendar-day-view.component';
10-
export * from './components/month/calendar-month-view.component';
11-
export * from './components/week/calendar-week-view.component';
12-
export {
13-
CalendarEvent,
14-
EventAction as CalendarEventAction,
15-
MonthViewDay as CalendarMonthViewDay,
16-
WeekViewEvent as CalendarWeekViewEvent,
17-
WeekViewEventRow as CalendarWeekViewEventRow,
18-
GetWeekViewArgs as CalendarGetWeekViewArgs,
19-
DAYS_OF_WEEK
20-
} from 'calendar-utils';
1+
export * from './calendar.module';

src/modules/calendar.ts

-118
This file was deleted.

src/components/month/calendar-month-view.component.ts src/month/calendar-month-view.component.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ import getMonth from 'date-fns/get_month';
2828
import getYear from 'date-fns/get_year';
2929
import differenceInSeconds from 'date-fns/difference_in_seconds';
3030
import addSeconds from 'date-fns/add_seconds';
31-
import { CalendarEventTimesChangedEvent } from '../../interfaces/calendar-event-times-changed-event.interface';
32-
import { CalendarUtils } from '../../providers/calendar-utils.provider';
33-
import { validateEvents } from '../../providers/util';
31+
import { CalendarEventTimesChangedEvent } from '../common/calendar-event-times-changed-event.interface';
32+
import { CalendarUtils } from '../common/calendar-utils.provider';
33+
import { validateEvents } from '../common/util';
3434

3535
/**
3636
* Shows all events on a given month. Example usage:

0 commit comments

Comments
 (0)