From c7337cbc10434dab533f5797cf78a33e9b645a22 Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 27 Dec 2019 10:50:35 +0300 Subject: [PATCH] fix(core): add ExtractFromOutput instead of ExtractFromGeneric to common types #2404 --- .../packages/core/src/lib/models/common.ts | 6 +++++- .../core/src/lib/models/replaceable-components.ts | 14 ++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/npm/ng-packs/packages/core/src/lib/models/common.ts b/npm/ng-packs/packages/core/src/lib/models/common.ts index 6661572893..8b4fb76cb0 100644 --- a/npm/ng-packs/packages/core/src/lib/models/common.ts +++ b/npm/ng-packs/packages/core/src/lib/models/common.ts @@ -1,5 +1,7 @@ import { eLayoutType } from '../enums/common'; import { Config } from './config'; +import { EventEmitter } from '@angular/core'; +import { Subject } from 'rxjs'; export namespace ABP { export interface Root { @@ -48,5 +50,7 @@ export namespace ABP { [key: string]: T; } - export type ExtractFromGeneric = Generic extends Array ? X : Generic; + export type ExtractFromOutput< + T extends EventEmitter | Subject + > = T extends EventEmitter ? X : T extends Subject ? Y : never; } diff --git a/npm/ng-packs/packages/core/src/lib/models/replaceable-components.ts b/npm/ng-packs/packages/core/src/lib/models/replaceable-components.ts index fb7e813791..9b6ae02d78 100644 --- a/npm/ng-packs/packages/core/src/lib/models/replaceable-components.ts +++ b/npm/ng-packs/packages/core/src/lib/models/replaceable-components.ts @@ -1,5 +1,6 @@ -import { Type } from '@angular/core'; +import { Type, EventEmitter } from '@angular/core'; import { ABP } from './common'; +import { Subject, BehaviorSubject } from 'rxjs'; export namespace ReplaceableComponents { export interface State { @@ -11,7 +12,10 @@ export namespace ReplaceableComponents { key: string; } - export interface ReplaceableTemplateData { + export interface ReplaceableTemplateData< + I, + O extends { [K in keyof O]: EventEmitter | Subject } + > { inputs: ReplaceableTemplateInputs; outputs: ReplaceableTemplateOutputs; componentKey: string; @@ -21,8 +25,10 @@ export namespace ReplaceableComponents { [K in keyof T]: T[K]; }; - export type ReplaceableTemplateOutputs = { - [K in keyof T]: (value: ABP.ExtractFromGeneric) => void; + export type ReplaceableTemplateOutputs< + T extends { [K in keyof T]: EventEmitter | Subject } + > = { + [K in keyof T]: (value: ABP.ExtractFromOutput) => void; }; export interface RouteData {