From 6bd4b7e934b4c77a1b9a873b3e26e3e926996fbb Mon Sep 17 00:00:00 2001 From: Dan Percic Date: Wed, 27 Jul 2022 16:38:07 +0300 Subject: [PATCH] update help-mode module --- src/lib/common-ui.module.ts | 7 ++----- src/lib/help-mode/help-docs.ts | 1 + src/lib/help-mode/help-mode.module.ts | 14 ++++++++++++-- src/lib/help-mode/help-mode.service.ts | 7 +++---- src/lib/help-mode/index.ts | 1 + src/lib/help-mode/tokens.ts | 10 +++++++--- src/lib/utils/base-app-config.ts | 1 + 7 files changed, 27 insertions(+), 14 deletions(-) create mode 100644 src/lib/help-mode/help-docs.ts diff --git a/src/lib/common-ui.module.ts b/src/lib/common-ui.module.ts index 7f9e883..0637417 100644 --- a/src/lib/common-ui.module.ts +++ b/src/lib/common-ui.module.ts @@ -19,7 +19,6 @@ import { ConnectionStatusComponent, FullPageErrorComponent } from './error'; import { IqserListingModule } from './listing'; import { IqserFiltersModule } from './filtering'; import { IqserInputsModule } from './inputs'; -import { IqserHelpModeModule } from './help-mode'; import { IqserIconsModule } from './icons'; import { IqserButtonsModule } from './buttons'; import { IqserScrollbarModule } from './scrollbar'; @@ -53,7 +52,6 @@ const modules = [ IqserListingModule, IqserFiltersModule, IqserInputsModule, - IqserHelpModeModule, IqserScrollbarModule, IqserEmptyStatesModule, ]; @@ -82,11 +80,10 @@ const pipes = [SortByPipe, HumanizePipe, CapitalizePipe]; exports: [...components, ...pipes, ...modules], }) export class CommonUiModule extends ModuleWithOptions { - static forRoot< - UserPreference extends BaseUserPreferenceService, + static forRoot, AppConfig extends BaseAppConfig = BaseAppConfig, - >(options: CommonUiOptions): ModuleWithProviders { + >(options: CommonUiOptions): ModuleWithProviders { const userPreferenceService = this._getService( BaseUserPreferenceService, DefaultUserPreferenceService, diff --git a/src/lib/help-mode/help-docs.ts b/src/lib/help-mode/help-docs.ts new file mode 100644 index 0000000..e1df4bf --- /dev/null +++ b/src/lib/help-mode/help-docs.ts @@ -0,0 +1 @@ +export type HelpDocs = Record>; diff --git a/src/lib/help-mode/help-mode.module.ts b/src/lib/help-mode/help-mode.module.ts index d077557..b9ae62a 100644 --- a/src/lib/help-mode/help-mode.module.ts +++ b/src/lib/help-mode/help-mode.module.ts @@ -1,4 +1,4 @@ -import { NgModule } from '@angular/core'; +import { ModuleWithProviders, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { TranslateModule } from '@ngx-translate/core'; import { MatDialogModule } from '@angular/material/dialog'; @@ -8,6 +8,9 @@ import { HelpModeDirective } from './help-mode.directive'; import { IqserButtonsModule } from '../buttons'; import { IqserIconsModule } from '../icons'; import { HelpButtonComponent } from './help-button/help-button.component'; +import { HelpModeService } from './help-mode.service'; +import { HelpDocs } from './help-docs'; +import { HELP_DOCS } from './tokens'; const matModules = [MatDialogModule]; const components = [HelpModeComponent, HelpModeDialogComponent, HelpModeDirective, HelpButtonComponent]; @@ -17,4 +20,11 @@ const components = [HelpModeComponent, HelpModeDialogComponent, HelpModeDirectiv imports: [CommonModule, IqserIconsModule, ...matModules, TranslateModule, IqserButtonsModule], exports: [...components], }) -export class IqserHelpModeModule {} +export class IqserHelpModeModule { + static forRoot(helpDocs: HelpDocs): ModuleWithProviders { + return { + ngModule: IqserHelpModeModule, + providers: [{ provide: HELP_DOCS, useValue: helpDocs }, HelpModeService], + }; + } +} diff --git a/src/lib/help-mode/help-mode.service.ts b/src/lib/help-mode/help-mode.service.ts index 0af1086..3606244 100644 --- a/src/lib/help-mode/help-mode.service.ts +++ b/src/lib/help-mode/help-mode.service.ts @@ -4,6 +4,7 @@ import { TranslateService } from '@ngx-translate/core'; import { BehaviorSubject, firstValueFrom } from 'rxjs'; import { HelpModeDialogComponent } from './help-mode-dialog/help-mode-dialog.component'; import { HELP_DOCS, MANUAL_BASE_URL } from './tokens'; +import { HelpDocs } from './help-docs'; const VIRTUAL_SCROLL_ID = 'virtual-scroll'; const ANNOTATIONS_LIST_ID = 'annotations-list'; @@ -23,9 +24,7 @@ interface Helper { readonly dialogElement: boolean; } -@Injectable({ - providedIn: 'root', -}) +@Injectable() export class HelpModeService { helpButtonKey: string | undefined; private readonly _isHelpModeActive$ = new BehaviorSubject(false); @@ -37,7 +36,7 @@ export class HelpModeService { private _dialogMode = false; constructor( - @Inject(HELP_DOCS) private readonly _docs: Record>, + @Inject(HELP_DOCS) private readonly _docs: HelpDocs, @Inject(MANUAL_BASE_URL) private readonly _manualBaseURL: string, private readonly _dialog: MatDialog, private readonly _rendererFactory: RendererFactory2, diff --git a/src/lib/help-mode/index.ts b/src/lib/help-mode/index.ts index 9c5dd28..62438eb 100644 --- a/src/lib/help-mode/index.ts +++ b/src/lib/help-mode/index.ts @@ -1,4 +1,5 @@ export * from './tokens'; +export * from './help-docs'; export * from './help-mode.module'; export * from './help-mode.service'; export * from './help-mode.directive'; diff --git a/src/lib/help-mode/tokens.ts b/src/lib/help-mode/tokens.ts index c8f5a26..e015696 100644 --- a/src/lib/help-mode/tokens.ts +++ b/src/lib/help-mode/tokens.ts @@ -1,4 +1,8 @@ -import { InjectionToken } from '@angular/core'; +import { inject, InjectionToken } from '@angular/core'; +import { BaseConfigService } from '../services'; +import { HelpDocs } from './help-docs'; -export const HELP_DOCS = new InjectionToken>>('Links to user manual or help docs'); -export const MANUAL_BASE_URL = new InjectionToken>>('Base manual URL'); +export const HELP_DOCS = new InjectionToken('Links to user manual or help docs'); +export const MANUAL_BASE_URL = new InjectionToken('Base manual URL', { + factory: () => inject(BaseConfigService).values.MANUAL_BASE_URL, +}); diff --git a/src/lib/utils/base-app-config.ts b/src/lib/utils/base-app-config.ts index 5929c45..b293084 100644 --- a/src/lib/utils/base-app-config.ts +++ b/src/lib/utils/base-app-config.ts @@ -5,4 +5,5 @@ export interface BaseAppConfig { readonly OAUTH_CLIENT_ID: string; readonly OAUTH_IDP_HINT: string; readonly OAUTH_URL: string; + readonly MANUAL_BASE_URL: string; }