Files
ionic-framework/angular/src/ionic-module.ts
2018-12-19 00:27:04 +01:00

152 lines
2.8 KiB
TypeScript

import { CommonModule } from '@angular/common';
import { APP_INITIALIZER, ModuleWithProviders, NgModule } from '@angular/core';
import { IonicConfig } from '@ionic/core';
import { appInitialize } from './app-initialize';
import * as c from './directives';
import * as d from './directives/proxies';
import * as p from './providers';
import { ConfigToken } from './providers/config';
const DECLARATIONS = [
// proxies
d.IonApp,
d.IonAvatar,
d.IonBackButton,
d.IonBackdrop,
d.IonBadge,
d.IonButton,
d.IonButtons,
d.IonCard,
d.IonCardContent,
d.IonCardHeader,
d.IonCardSubtitle,
d.IonCardTitle,
d.IonCheckbox,
d.IonChip,
d.IonCol,
d.IonContent,
d.IonDatetime,
d.IonFab,
d.IonFabButton,
d.IonFabList,
d.IonFooter,
d.IonGrid,
d.IonHeader,
d.IonIcon,
d.IonImg,
d.IonInfiniteScroll,
d.IonInfiniteScrollContent,
d.IonInput,
d.IonItem,
d.IonItemDivider,
d.IonItemGroup,
d.IonItemOption,
d.IonItemOptions,
d.IonItemSliding,
d.IonLabel,
d.IonList,
d.IonListHeader,
d.IonMenu,
d.IonMenuButton,
d.IonMenuToggle,
d.IonNav,
d.IonNavPop,
d.IonNavPush,
d.IonNavSetRoot,
d.IonNote,
d.IonProgressBar,
d.IonRadio,
d.IonRadioGroup,
d.IonRange,
d.IonRefresher,
d.IonRefresherContent,
d.IonReorder,
d.IonReorderGroup,
d.IonRippleEffect,
d.IonRow,
d.IonSearchbar,
d.IonSegment,
d.IonSegmentButton,
d.IonSelect,
d.IonSelectOption,
d.IonSelectPopover,
d.IonSkeletonText,
d.IonSlide,
d.IonSlides,
d.IonSpinner,
d.IonSplitPane,
d.IonTabBar,
d.IonTabButton,
d.IonText,
d.IonTextarea,
d.IonThumbnail,
d.IonToggle,
d.IonToolbar,
d.IonTitle,
c.IonTabs,
// ngModel accessors
c.BooleanValueAccessor,
c.NumericValueAccessor,
c.RadioValueAccessor,
c.SelectValueAccessor,
c.TextValueAccessor,
// navigation
c.IonRouterOutlet,
c.IonBackButtonDelegate,
c.NavDelegate,
c.RouterLinkDelegate,
// virtual scroll
c.VirtualFooter,
c.VirtualHeader,
c.VirtualItem,
c.IonVirtualScroll
];
const PROVIDERS = [
p.ActionSheetController,
p.AlertController,
p.Config,
p.LoadingController,
p.PickerController,
p.ToastController,
p.MenuController,
p.NavController,
p.Platform,
p.Events,
p.DomController
];
@NgModule({
declarations: DECLARATIONS,
exports: DECLARATIONS,
providers: [p.AngularDelegate, p.ModalController, p.PopoverController],
imports: [CommonModule]
})
export class IonicModule {
static forRoot(config?: IonicConfig): ModuleWithProviders {
return {
ngModule: IonicModule,
providers: [
{
provide: ConfigToken,
useValue: config
},
{
provide: APP_INITIALIZER,
useFactory: appInitialize,
multi: true,
deps: [
ConfigToken
]
},
...PROVIDERS
]
};
}
}