bfend
Version:
Admin template base on ng-zorro-antd
147 lines • 15.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { APP_INITIALIZER, NgModule } from '@angular/core';
import { NgZorroAntdModule, NZ_I18N, zh_CN } from 'ng-zorro-antd';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { RouterModule } from '@angular/router';
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
import { CommonModule } from '@angular/common';
import { NgProgressModule } from '@ngx-progressbar/core';
import { AngularWebStorageModule } from 'angular-web-storage';
import { JWT_OPTIONS, JwtModule } from '@auth0/angular-jwt';
import { BfAppService } from './app.service';
import { BFEND_OPTIONS } from './options.type';
import { BfTokenStorage } from './auth/token.service';
import { BfHttpManagedInterceptor } from './http/http-managed.interceptor';
import { BfAuthInterceptor } from './auth/auth.interceptor';
import { BfHttpInterceptor } from './http/http.interceptor';
import { BfLayoutComponent } from './components/layout/layout.component';
import { BfFullScreenComponent } from './components/layout/fullscreen.component';
import { BfHeaderComponent } from './components/layout/header.component';
import { BfAsideComponent } from './components/layout/aside.component';
import { BfFooterComponent } from './components/layout/footer.component';
import { BfPageComponent } from './components/layout/page.component';
import { BfModalProxyComponent } from './components/modal-proxy.component';
import { BfStateTextComponent } from './components/state-text.component';
import { BfChangePasswordComponent } from './components/change-password.component';
import { BfACLDirective } from './components/acl.directive';
import { BfConfirmationValidatorDirective } from './components/confirmation-validator.directive';
import { BfDatetimeValidatorDirective } from './components/datetime-validator.directive';
import { BfMinNumberValidatorDirective } from './components/min-number-validator.directive';
import { BfMaxNumberValidatorDirective } from './components/max-number-validator.directive';
import { BfYuanPipe } from './components/yuan.pipe';
/** @type {?} */
const COMPONENTS = [
BfLayoutComponent,
BfFullScreenComponent,
BfHeaderComponent,
BfAsideComponent,
BfFooterComponent,
BfPageComponent,
BfModalProxyComponent,
BfStateTextComponent,
BfChangePasswordComponent
];
/** @type {?} */
const ENTRY_COMPONENTS = [
BfChangePasswordComponent
];
/** @type {?} */
const DIRECTIVES = [
BfACLDirective,
BfConfirmationValidatorDirective,
BfDatetimeValidatorDirective,
BfMinNumberValidatorDirective,
BfMaxNumberValidatorDirective
];
/** @type {?} */
const PIPES = [
BfYuanPipe
];
/**
* @param {?} storage
* @return {?}
*/
export function jwtOptionsFactory(storage) {
return {
skipWhenExpired: false,
whitelistedDomains: [/^null$/],
tokenGetter: () => {
return storage.token;
}
};
}
/**
* @param {?} appService
* @return {?}
*/
export function startupServiceFactory(appService) {
return () => appService.startup();
}
/**
* \@dynamic
*/
export class BfendModule {
/**
* @param {?} options
* @return {?}
*/
static forRoot(options) {
return {
ngModule: BfendModule,
providers: [
...JwtModule.forRoot({
jwtOptionsProvider: {
provide: JWT_OPTIONS,
useFactory: jwtOptionsFactory,
deps: [BfTokenStorage],
}
}).providers,
...NgProgressModule.forRoot().providers,
{ provide: NZ_I18N, useValue: zh_CN },
{ provide: BFEND_OPTIONS, useValue: options },
{
provide: APP_INITIALIZER,
useFactory: startupServiceFactory,
deps: [BfAppService],
multi: true
},
// 注意:这里后添加的先执行
{ provide: HTTP_INTERCEPTORS, useClass: BfHttpManagedInterceptor, multi: true },
{ provide: HTTP_INTERCEPTORS, useClass: BfAuthInterceptor, multi: true },
{ provide: HTTP_INTERCEPTORS, useClass: BfHttpInterceptor, multi: true },
]
};
}
}
BfendModule.decorators = [
{ type: NgModule, args: [{
imports: [
CommonModule,
FormsModule,
RouterModule,
ReactiveFormsModule,
NgZorroAntdModule,
NgProgressModule,
HttpClientModule,
AngularWebStorageModule,
NgZorroAntdModule
],
exports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
RouterModule,
NgZorroAntdModule,
NgProgressModule,
COMPONENTS,
DIRECTIVES,
PIPES
],
declarations: [COMPONENTS, DIRECTIVES, PIPES],
entryComponents: [ENTRY_COMPONENTS],
},] },
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmZlbmQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYmZlbmQvIiwic291cmNlcyI6WyJsaWIvYmZlbmQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsZUFBZSxFQUF1QixRQUFRLEVBQXNCLE1BQU0sZUFBZSxDQUFDO0FBQ25HLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUUsYUFBYSxFQUFnQixNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFP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RSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztnQkFDdEUsRUFBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7YUFDdkU7U0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBekRGLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixXQUFXO29CQUNYLFlBQVk7b0JBQ1osbUJBQW1CO29CQUVuQixpQkFBaUI7b0JBQ2pCLGdCQUFnQjtvQkFFaEIsZ0JBQWdCO29CQUNoQix1QkFBdUI7b0JBQ3ZCLGlCQUFpQjtpQkFDbEI7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxtQkFBbUI7b0JBQ25CLFlBQVk7b0JBQ1osaUJBQWlCO29CQUNqQixnQkFBZ0I7b0JBRWhCLFVBQVU7b0JBQ1YsVUFBVTtvQkFDVixLQUFLO2lCQUNOO2dCQUNELFlBQVksRUFBRSxDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsS0FBSyxDQUFDO2dCQUM3QyxlQUFlLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQzthQUNwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdab3Jyb0FudGRNb2R1bGUsIE5aX0kxOE4sIHpoX0NOIH0gZnJvbSAnbmctem9ycm8tYW50ZCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBIVFRQX0lOVEVSQ0VQVE9SUywgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ1Byb2dyZXNzTW9kdWxlIH0gZnJvbSAnQG5neC1wcm9ncmVzc2Jhci9jb3JlJztcbmltcG9ydCB7IEFuZ3VsYXJXZWJTdG9yYWdlTW9kdWxlIH0gZnJvbSAnYW5ndWxhci13ZWItc3RvcmFnZSc7XG5pbXBvcnQgeyBKV1RfT1BUSU9OUywgSnd0TW9kdWxlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcblxuaW1wb3J0IHsgQmZBcHBTZXJ2aWNlIH0gZnJvbSAnLi9hcHAuc2VydmljZSc7XG5pbXBvcnQgeyBCRkVORF9PUFRJT05TLCBCZmVuZE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMudHlwZSc7XG5pbXBvcnQgeyBCZlRva2VuU3RvcmFnZSB9IGZyb20gJy4vYXV0aC90b2tlbi5zZXJ2aWNlJztcbmltcG9ydCB7IEJmSHR0cE1hbmFnZWRJbnRlcmNlcHRvciB9IGZyb20gJy4vaHR0cC9odHRwLW1hbmFnZWQuaW50ZXJjZXB0b3InO1xuaW1wb3J0IHsgQmZBdXRoSW50ZXJjZXB0b3IgfSBmcm9tICcuL2F1dGgvYXV0aC5pbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBCZkh0dHBJbnRlcmNlcHRvciB9IGZyb20gJy4vaHR0cC9odHRwLmludGVyY2VwdG9yJztcblxuaW1wb3J0IHsgQmZMYXlvdXRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0L2xheW91dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmZGdWxsU2NyZWVuQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC9mdWxsc2NyZWVuLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCZkhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9sYXlvdXQvaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCZkFzaWRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC9hc2lkZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmZGb290ZXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbGF5b3V0L2Zvb3Rlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmZQYWdlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2xheW91dC9wYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCZk1vZGFsUHJveHlDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWwtcHJveHkuY29tcG9uZW50JztcbmltcG9ydCB7IEJmU3RhdGVUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3N0YXRlLXRleHQuY29tcG9uZW50JztcbmltcG9ydCB7IEJmQ2hhbmdlUGFzc3dvcmRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2hhbmdlLXBhc3N3b3JkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCZkFDTERpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9hY2wuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJmQ29uZmlybWF0aW9uVmFsaWRhdG9yRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbmZpcm1hdGlvbi12YWxpZGF0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJmRGF0ZXRpbWVWYWxpZGF0b3JEaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvZGF0ZXRpbWUtdmFsaWRhdG9yLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBCZk1pbk51bWJlclZhbGlkYXRvckRpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9taW4tbnVtYmVyLXZhbGlkYXRvci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmZNYXhOdW1iZXJWYWxpZGF0b3JEaXJlY3RpdmUgfSBmcm9tICcuL2NvbXBvbmVudHMvbWF4LW51bWJlci12YWxpZGF0b3IuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJmWXVhblBpcGUgfSBmcm9tICcuL2NvbXBvbmVudHMveXVhbi5waXBlJztcblxuY29uc3QgQ09NUE9ORU5UUyA9IFtcbiAgQmZMYXlvdXRDb21wb25lbnQsXG4gIEJmRnVsbFNjcmVlbkNvbXBvbmVudCxcbiAgQmZIZWFkZXJDb21wb25lbnQsXG4gIEJmQXNpZGVDb21wb25lbnQsXG4gIEJmRm9vdGVyQ29tcG9uZW50LFxuICBCZlBhZ2VDb21wb25lbnQsXG4gIEJmTW9kYWxQcm94eUNvbXBvbmVudCxcbiAgQmZTdGF0ZVRleHRDb21wb25lbnQsXG4gIEJmQ2hhbmdlUGFzc3dvcmRDb21wb25lbnRcbl07XG5cbmNvbnN0IEVOVFJZX0NPTVBPTkVOVFMgPSBbXG4gIEJmQ2hhbmdlUGFzc3dvcmRDb21wb25lbnRcbl07XG5cbmNvbnN0IERJUkVDVElWRVMgPSBbXG4gIEJmQUNMRGlyZWN0aXZlLFxuICBCZkNvbmZpcm1hdGlvblZhbGlkYXRvckRpcmVjdGl2ZSxcbiAgQmZEYXRldGltZVZhbGlkYXRvckRpcmVjdGl2ZSxcbiAgQmZNaW5OdW1iZXJWYWxpZGF0b3JEaXJlY3RpdmUsXG4gIEJmTWF4TnVtYmVyVmFsaWRhdG9yRGlyZWN0aXZlXG5dO1xuXG5jb25zdCBQSVBFUyA9IFtcbiAgQmZZdWFuUGlwZVxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGp3dE9wdGlvbnNGYWN0b3J5KHN0b3JhZ2U6IEJmVG9rZW5TdG9yYWdlKSB7XG4gIHJldHVybiB7XG4gICAgc2tpcFdoZW5FeHBpcmVkOiBmYWxzZSxcbiAgICB3aGl0ZWxpc3RlZERvbWFpbnM6IFsvXm51bGwkL10sXG4gICAgdG9rZW5HZXR0ZXI6ICgpID0+IHtcbiAgICAgIHJldHVybiBzdG9yYWdlLnRva2VuO1xuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0dXBTZXJ2aWNlRmFjdG9yeShhcHBTZXJ2aWNlOiBCZkFwcFNlcnZpY2UpOiBGdW5jdGlvbiB7XG4gIHJldHVybiAoKSA9PiBhcHBTZXJ2aWNlLnN0YXJ0dXAoKTtcbn1cblxuLyoqIEBkeW5hbWljICovXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuXG4gICAgTmdab3Jyb0FudGRNb2R1bGUsXG4gICAgTmdQcm9ncmVzc01vZHVsZSxcblxuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgQW5ndWxhcldlYlN0b3JhZ2VNb2R1bGUsXG4gICAgTmdab3Jyb0FudGRNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBOZ1pvcnJvQW50ZE1vZHVsZSxcbiAgICBOZ1Byb2dyZXNzTW9kdWxlLFxuXG4gICAgQ09NUE9ORU5UUyxcbiAgICBESVJFQ1RJVkVTLFxuICAgIFBJUEVTXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW0NPTVBPTkVOVFMsIERJUkVDVElWRVMsIFBJUEVTXSxcbiAgZW50cnlDb21wb25lbnRzOiBbRU5UUllfQ09NUE9ORU5UU10sXG59KVxuZXhwb3J0IGNsYXNzIEJmZW5kTW9kdWxlIHtcbiAgc3RhdGljIGZvclJvb3Qob3B0aW9uczogQmZlbmRPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVycyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5nTW9kdWxlOiBCZmVuZE1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAuLi5Kd3RNb2R1bGUuZm9yUm9vdCh7XG4gICAgICAgICAgand0T3B0aW9uc1Byb3ZpZGVyOiB7XG4gICAgICAgICAgICBwcm92aWRlOiBKV1RfT1BUSU9OUyxcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IGp3dE9wdGlvbnNGYWN0b3J5LFxuICAgICAgICAgICAgZGVwczogW0JmVG9rZW5TdG9yYWdlXSxcbiAgICAgICAgICB9XG4gICAgICAgIH0pLnByb3ZpZGVycyxcblxuICAgICAgICAuLi5OZ1Byb2dyZXNzTW9kdWxlLmZvclJvb3QoKS5wcm92aWRlcnMsXG4gICAgICAgIHtwcm92aWRlOiBOWl9JMThOLCB1c2VWYWx1ZTogemhfQ059LFxuICAgICAgICB7cHJvdmlkZTogQkZFTkRfT1BUSU9OUywgdXNlVmFsdWU6IG9wdGlvbnN9LFxuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IHN0YXJ0dXBTZXJ2aWNlRmFjdG9yeSxcbiAgICAgICAgICBkZXBzOiBbQmZBcHBTZXJ2aWNlXSxcbiAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICAvLyDms6jmhI/vvJrov5nph4zlkI7mt7vliqDnmoTlhYjmiafooYxcbiAgICAgICAge3Byb3ZpZGU6IEhUVFBfSU5URVJDRVBUT1JTLCB1c2VDbGFzczogQmZIdHRwTWFuYWdlZEludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZX0sXG4gICAgICAgIHtwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IEJmQXV0aEludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZX0sXG4gICAgICAgIHtwcm92aWRlOiBIVFRQX0lOVEVSQ0VQVE9SUywgdXNlQ2xhc3M6IEJmSHR0cEludGVyY2VwdG9yLCBtdWx0aTogdHJ1ZX0sXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl19