From 8b8dced2b96c2eda662b9edc572f4ece56de3579 Mon Sep 17 00:00:00 2001 From: muhammedaltug Date: Thu, 9 Jun 2022 23:18:05 +0300 Subject: [PATCH] add createInjector pipe --- .../packages/core/src/lib/core.module.ts | 116 +++++++++--------- .../packages/core/src/lib/pipes/index.ts | 1 - .../core/src/lib/pipes/pipe-function.pipe.ts | 14 --- .../abstract-actions.component.ts | 4 +- .../page-toolbar/page-toolbar.component.html | 5 +- .../page-toolbar/page-toolbar.component.ts | 28 +---- .../src/lib/models/toolbar-actions.ts | 8 +- .../src/lib/pipes/create-injector.pipe.ts | 29 +++++ .../src/lib/ui-extensions.module.ts | 3 + .../theme-shared/extensions/src/public-api.ts | 1 + 10 files changed, 101 insertions(+), 108 deletions(-) delete mode 100644 npm/ng-packs/packages/core/src/lib/pipes/pipe-function.pipe.ts create mode 100644 npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts diff --git a/npm/ng-packs/packages/core/src/lib/core.module.ts b/npm/ng-packs/packages/core/src/lib/core.module.ts index 5dc907ff6a..22cd68f314 100644 --- a/npm/ng-packs/packages/core/src/lib/core.module.ts +++ b/npm/ng-packs/packages/core/src/lib/core.module.ts @@ -1,5 +1,5 @@ import { CommonModule } from '@angular/common'; -import { HttpClientModule, HttpClientXsrfModule, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { HTTP_INTERCEPTORS, HttpClientModule, HttpClientXsrfModule } from '@angular/common/http'; import { APP_INITIALIZER, Injector, ModuleWithProviders, NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { RouterModule } from '@angular/router'; @@ -29,7 +29,7 @@ import { LocaleProvider } from './providers/locale.provider'; import { LocalizationService } from './services/localization.service'; import { oAuthStorage } from './strategies/auth-flow.strategy'; import { localizationContributor, LOCALIZATIONS } from './tokens/localization.token'; -import { coreOptionsFactory, CORE_OPTIONS } from './tokens/options.token'; +import { CORE_OPTIONS, coreOptionsFactory } from './tokens/options.token'; import { TENANT_KEY } from './tokens/tenant-key.token'; import { noop } from './utils/common-utils'; import './utils/date-extensions'; @@ -37,7 +37,6 @@ import { getInitialData, localeInitializer } from './utils/initial-utils'; import { ShortDateTimePipe } from './pipes/short-date-time.pipe'; import { ShortTimePipe } from './pipes/short-time.pipe'; import { ShortDatePipe } from './pipes/short-date.pipe'; -import { PipeFunction } from "./pipes"; export function storageFactory(): OAuthStorage { return oAuthStorage; @@ -50,63 +49,60 @@ export function storageFactory(): OAuthStorage { * This module will be imported and exported by all others. */ @NgModule({ - exports: [ - CommonModule, - HttpClientModule, - FormsModule, - ReactiveFormsModule, - RouterModule, - LocalizationModule, - AbstractNgModelComponent, - AutofocusDirective, - DynamicLayoutComponent, - ForDirective, - FormSubmitDirective, - InitDirective, - InputEventDebounceDirective, - PermissionDirective, - ReplaceableRouteContainerComponent, - ReplaceableTemplateDirective, - RouterOutletComponent, - SortPipe, - StopPropagationDirective, - ToInjectorPipe, - ShortDateTimePipe, - ShortTimePipe, - ShortDatePipe, - PipeFunction - ], - imports: [ - OAuthModule, - CommonModule, - HttpClientModule, - FormsModule, - ReactiveFormsModule, - RouterModule, - LocalizationModule, - ], - declarations: [ - AbstractNgModelComponent, - AutofocusDirective, - DynamicLayoutComponent, - ForDirective, - FormSubmitDirective, - InitDirective, - InputEventDebounceDirective, - PermissionDirective, - ReplaceableRouteContainerComponent, - ReplaceableTemplateDirective, - RouterOutletComponent, - SortPipe, - StopPropagationDirective, - ToInjectorPipe, - ShortDateTimePipe, - ShortTimePipe, - ShortDatePipe, - PipeFunction - - ], - providers: [LocalizationPipe] + exports: [ + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + LocalizationModule, + AbstractNgModelComponent, + AutofocusDirective, + DynamicLayoutComponent, + ForDirective, + FormSubmitDirective, + InitDirective, + InputEventDebounceDirective, + PermissionDirective, + ReplaceableRouteContainerComponent, + ReplaceableTemplateDirective, + RouterOutletComponent, + SortPipe, + StopPropagationDirective, + ToInjectorPipe, + ShortDateTimePipe, + ShortTimePipe, + ShortDatePipe, + ], + imports: [ + OAuthModule, + CommonModule, + HttpClientModule, + FormsModule, + ReactiveFormsModule, + RouterModule, + LocalizationModule, + ], + declarations: [ + AbstractNgModelComponent, + AutofocusDirective, + DynamicLayoutComponent, + ForDirective, + FormSubmitDirective, + InitDirective, + InputEventDebounceDirective, + PermissionDirective, + ReplaceableRouteContainerComponent, + ReplaceableTemplateDirective, + RouterOutletComponent, + SortPipe, + StopPropagationDirective, + ToInjectorPipe, + ShortDateTimePipe, + ShortTimePipe, + ShortDatePipe, + ], + providers: [LocalizationPipe], }) export class BaseCoreModule {} diff --git a/npm/ng-packs/packages/core/src/lib/pipes/index.ts b/npm/ng-packs/packages/core/src/lib/pipes/index.ts index 7ac9f76a33..71ce383cd3 100644 --- a/npm/ng-packs/packages/core/src/lib/pipes/index.ts +++ b/npm/ng-packs/packages/core/src/lib/pipes/index.ts @@ -4,4 +4,3 @@ export * from './to-injector.pipe'; export * from './short-date.pipe'; export * from './short-time.pipe'; export * from './short-date-time.pipe'; -export * from './pipe-function.pipe'; diff --git a/npm/ng-packs/packages/core/src/lib/pipes/pipe-function.pipe.ts b/npm/ng-packs/packages/core/src/lib/pipes/pipe-function.pipe.ts deleted file mode 100644 index efb0f8acaa..0000000000 --- a/npm/ng-packs/packages/core/src/lib/pipes/pipe-function.pipe.ts +++ /dev/null @@ -1,14 +0,0 @@ -import {Pipe, PipeTransform} from "@angular/core"; - -@Pipe({ - name: 'pipeFunction' -}) -export class PipeFunction implements PipeTransform { - public transform(value: any, handler: (value: any) => any, context?: any): any { - if (context) { - return handler.call(context, value); - } - - return handler(value); - } -} diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts index 6f24273812..285e3fd00a 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts @@ -2,6 +2,7 @@ import { Directive, Injector, Input } from '@angular/core'; import { ActionData, ActionList } from '../../models/actions'; import { ExtensionsService } from '../../services/extensions.service'; import { EXTENSIONS_ACTION_TYPE, EXTENSIONS_IDENTIFIER } from '../../tokens/extensions.token'; +import { InferredData, InferredRecord } from '../../models/toolbar-actions'; // Fix for https://github.com/angular/angular/issues/23904 // @dynamic @@ -25,6 +26,3 @@ export abstract class AbstractActionsComponent> extend this.actionList = extensions[type].get(name).actions as unknown as L; } } - -type InferredData = ActionData>; -type InferredRecord = L extends ActionList ? R : never; diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.html b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.html index 32b4c9ba42..4cf968e6de 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.html +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.html @@ -8,7 +8,10 @@ diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.ts index dfd7c0105d..db5c9cd167 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/page-toolbar/page-toolbar.component.ts @@ -1,18 +1,6 @@ -import { - ChangeDetectionStrategy, - Component, - InjectFlags, - InjectionToken, - Injector, - TrackByFunction, - Type, -} from '@angular/core'; +import { ChangeDetectionStrategy, Component, Injector, TrackByFunction } from '@angular/core'; import { ToolbarActionList, ToolbarComponent } from '../../models/toolbar-actions'; -import { - EXTENSIONS_ACTION_CALLBACK, - EXTENSIONS_ACTION_DATA, - EXTENSIONS_ACTION_TYPE, -} from '../../tokens/extensions.token'; +import { EXTENSIONS_ACTION_TYPE } from '../../tokens/extensions.token'; import { AbstractActionsComponent } from '../abstract-actions/abstract-actions.component'; @Component({ @@ -34,16 +22,4 @@ export class PageToolbarComponent extends AbstractActionsComponent): Injector { - const get = (token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags) => { - return token === EXTENSIONS_ACTION_DATA - ? this.data - : token === EXTENSIONS_ACTION_CALLBACK - ? (data = this.data) => action.action(data) - : this.getInjected.call(this.injector, token, notFoundValue, flags); - }; - - return { get }; - } } diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/toolbar-actions.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/toolbar-actions.ts index 1a311d7a5d..0ed857d235 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/toolbar-actions.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/models/toolbar-actions.ts @@ -3,11 +3,11 @@ import { O } from 'ts-toolbelt'; import { Action, ActionContributorCallback, - ActionContributorCallbacks, + ActionContributorCallbacks, ActionData, ActionList, Actions, - ActionsFactory, -} from './actions'; + ActionsFactory +} from "./actions"; export class ToolbarActionList extends ActionList< R, @@ -77,3 +77,5 @@ export type ToolbarActionContributorCallback = ActionContributorCallbac export type ToolbarActionContributorCallbacks = ActionContributorCallbacks< ToolbarActionList >; +export type InferredData = ActionData>; +export type InferredRecord = L extends ActionList ? R : never; diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts new file mode 100644 index 0000000000..6569447198 --- /dev/null +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/pipes/create-injector.pipe.ts @@ -0,0 +1,29 @@ +import { InjectFlags, InjectionToken, Injector, Pipe, PipeTransform, Type } from '@angular/core'; +import { InferredData, ToolbarComponent } from '../models/toolbar-actions'; +import { + EXTENSIONS_ACTION_CALLBACK, + EXTENSIONS_ACTION_DATA, +} from '@abp/ng.theme.shared/extensions'; +import { ReadonlyActionData } from '../models/actions'; + +@Pipe({ + name: 'createInjector', +}) +export class CreateInjectorPipe implements PipeTransform { + constructor(private injector: Injector) {} + + public transform( + action: ToolbarComponent, + componentData: ReadonlyActionData, + getInjectedFn: InferredData['getInjected'], + ): Injector { + const get = (token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags) => { + return token === EXTENSIONS_ACTION_DATA + ? componentData + : token === EXTENSIONS_ACTION_CALLBACK + ? (data = componentData) => action.action(data) + : getInjectedFn.call(this.injector, token, notFoundValue, flags); + }; + return { get }; + } +} diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts index 28456e0324..398b1b2488 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/ui-extensions.module.ts @@ -16,6 +16,7 @@ import { GridActionsComponent } from './components/grid-actions/grid-actions.com import { PageToolbarComponent } from './components/page-toolbar/page-toolbar.component'; import { DisabledDirective } from './directives/disabled.directive'; import { PropDataDirective } from './directives/prop-data.directive'; +import { CreateInjectorPipe } from './pipes'; @NgModule({ exports: [ @@ -26,6 +27,7 @@ import { PropDataDirective } from './directives/prop-data.directive'; ExtensibleTableComponent, PropDataDirective, DisabledDirective, + CreateInjectorPipe, ], declarations: [ DateTimePickerComponent, @@ -36,6 +38,7 @@ import { PropDataDirective } from './directives/prop-data.directive'; ExtensibleTableComponent, PropDataDirective, DisabledDirective, + CreateInjectorPipe, ], imports: [ CoreModule, diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/public-api.ts b/npm/ng-packs/packages/theme-shared/extensions/src/public-api.ts index a3afbe7efd..b19f8eb0d9 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/public-api.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/public-api.ts @@ -61,6 +61,7 @@ export { ToolbarComponent, ToolbarComponentOptions, } from './lib/models/toolbar-actions'; +export * from './lib/pipes/create-injector.pipe'; export * from './lib/services/extensions.service'; export * from './lib/tokens/extensions.token'; export * from './lib/ui-extensions.module';