import { Input, Inject, Output, NgZone, Renderer2, Component, Injectable, ElementRef, EventEmitter, ChangeDetectorRef, } from '@angular/core'; import { XResourceIDs, XStandardType, XOneOrManyType, XColorIdentifier, XResourceIdentifier, XColorWithBrightness, } from 'x-framework-core'; import { XBaseContainer, IXBaseContainer, XBaseContainerComponent, } from './i-x-base.container'; import { XCardActionModel, XComponentCardContainer, IXComponentCardContainer, } from '../x-card/x-card.typings'; import { map } from 'rxjs/operators'; import { Observable, forkJoin, Subject } from 'rxjs'; import { ViewportRuler } from '@angular/cdk/overlay'; import { XManagerService } from 'x-framework-services'; import { XIconIdentifier } from '../x-icon/x-icon.typings'; import { IXButtonContainer, XButtonType } from '../x-button/x-button.typings'; import { X_FRAMEWORK_COMPONENTS_CONFIG } from '../tokens/x-injectable-tokens'; import { XSlotNameIdentifier, XSlotName } from '../x-slotter/x-slotter.typings'; import { XFrameworkComponentsConfig } from '../config/x-framework-components.config'; // export enum XNPRButtonType { Next = 'next', Prev = 'prev', Reset = 'reset', } // export type XNPRButtonTypeIdentifier = XNPRButtonType | string; // //#region Next ... export interface IXNextHost { canNext: XStandardType; onNext: EventEmitter; } export interface IXNextContainer extends IXBaseContainer { // //#region Next ... hasNext: XStandardType; disableNext: XStandardType; nextConfirmer: () => XStandardType; nextPosition: XStandardType; nextCssClass: XStandardType>; nextButton: XStandardType>; //#endregion } export const defaultNextButton: Partial = { title: XResourceIDs.next, type: XButtonType.Raised, color: XColorWithBrightness.Primary, }; @Injectable({ providedIn: 'root', }) export abstract class XNextContainer extends XBaseContainer implements Readonly { // //#region Next ... readonly hasNext: XStandardType; readonly disableNext: XStandardType; readonly nextConfirmer: () => XStandardType; readonly nextPosition: XStandardType = XSlotName.START; readonly nextCssClass: XStandardType> = 'ion-text-start'; readonly nextButton: XStandardType> = { ...defaultNextButton, }; //#endregion } //#endregion // //#region Prev ... export interface IXPrevHost { canPrev: XStandardType; onPrev: EventEmitter; } export interface IXPrevContainer extends IXBaseContainer { // //#region Prev ... hasPrev: XStandardType; disablePrev: XStandardType; prevConfirmer: () => XStandardType; prevPosition: XStandardType; prevCssClass: XStandardType>; prevButton: XStandardType>; //#endregion } export const defaultPrevButton: Partial = { type: XButtonType.Raised, title: XResourceIDs.previous, color: XColorWithBrightness.Primary, }; @Injectable({ providedIn: 'root', }) export abstract class XPrevContainer extends XBaseContainer implements Readonly { // //#region Prev ... readonly hasPrev: XStandardType; readonly disablePrev: XStandardType; readonly prevConfirmer: () => XStandardType; readonly prevPosition: XStandardType = XSlotName.END; readonly prevCssClass: XStandardType> = 'ion-text-end'; readonly prevButton: XStandardType> = { ...defaultPrevButton, }; //#endregion } //#endregion // //#region Reset ... export interface IXResetHost { canReset: XStandardType; onReset: EventEmitter; } export interface IXResetContainer extends IXBaseContainer { // //#region Reset ... hasReset: XStandardType; disableReset: XStandardType; resetConfirmer: () => XStandardType; resetPosition: XStandardType; resetCssClass: XStandardType>; resetButton: XStandardType>; //#endregion } export const defaultResetButton: Partial = { type: XButtonType.Raised, title: XResourceIDs.reset, color: XColorWithBrightness.Warning, }; @Injectable({ providedIn: 'root', }) export abstract class XResetContainer extends XBaseContainer implements Readonly { // //#region Reset ... readonly hasReset: XStandardType; readonly disableReset: XStandardType; readonly resetConfirmer: () => XStandardType; readonly resetPosition: XStandardType = XSlotName.CENTER; readonly resetCssClass: XStandardType> = 'ion-text-center'; readonly resetButton: XStandardType> = { ...defaultResetButton, }; //#endregion } //#endregion // //#region Combined ... // //#region Host ... // type XCompleteHostInterface = IXNextHost & IXPrevHost & IXResetHost; // tslint:disable-next-line:no-empty-interface export interface IXNextPrevResetHostContainer extends XCompleteHostInterface {} @Injectable({ providedIn: 'root', }) export class XNextPrevResetHostContainer extends XBaseContainer implements Readonly { // //#region Props ... // //#region Next ... readonly canNext: XStandardType = true; readonly onNext: EventEmitter = new EventEmitter(); //#endregion // //#region Prev ... readonly canPrev: XStandardType = true; readonly onPrev: EventEmitter = new EventEmitter(); //#endregion // //#region Reset ... readonly canReset: XStandardType = true; readonly onReset: EventEmitter = new EventEmitter(); //#endregion //#endregion } @Injectable() @Component({ template: ``, }) export abstract class XNextPrevResetHostContainerComponent extends XBaseContainerComponent implements IXNextPrevResetHostContainer { // //#region Props ... // //#region Next ... @Input() canNext: XStandardType = this.propertyProvider.canNext; @Output() onNext: EventEmitter = new EventEmitter(); //#endregion // //#region Prev ... @Input() canPrev: XStandardType = this.propertyProvider.canPrev; @Output() onPrev: EventEmitter = new EventEmitter(); //#endregion // //#region Reset ... @Input() canReset: XStandardType = this.propertyProvider.canReset; @Output() onReset: EventEmitter = new EventEmitter(); //#endregion //#endregion // //#region Constructor ... public constructor( @Inject(X_FRAMEWORK_COMPONENTS_CONFIG) public config: XFrameworkComponentsConfig, public managerService: XManagerService, public element: ElementRef, public renderer: Renderer2, public ruler: ViewportRuler, public zone: NgZone, public changeDetector: ChangeDetectorRef, protected propertyProvider: XNextPrevResetHostContainer, ) { super( config, managerService, element, renderer, ruler, zone, changeDetector, ); } //#endregion // //#region Abstract ... public extractProps( container?: IXNextPrevResetHostContainer, ): Observable { return forkJoin({ // canNext: this.getValue(container ? container.canNext : this.canNext), canPrev: this.getValue(container ? container.canPrev : this.canPrev), canReset: this.getValue(container ? container.canReset : this.canReset), }).pipe( map((data) => { return { // ...data, // onNext: this.onNext, onPrev: this.onPrev, onReset: this.onReset, }; }), ); } //#endregion } //#endregion // //#region XCardHost // type TXCardEmptyContainer = IXComponentCardContainer & IXNextPrevResetHostContainer; export interface IXCardNextPrevResetHostContainer extends TXCardEmptyContainer {} // @Injectable({ providedIn: 'root', }) export class XCardNextPrevResetHostContainer extends XBaseContainer implements IXCardNextPrevResetHostContainer { // //#region Props ... // //#region XComponentCard ... readonly isInPage: XStandardType = this.cardPropertyProvider.isInPage; readonly wrapWithCard: XStandardType = this.cardPropertyProvider.wrapWithCard; readonly cardShowFooter: XStandardType = this.cardPropertyProvider.cardShowFooter; readonly cardShowActions: XStandardType = this.cardPropertyProvider.cardShowActions; readonly cardColor: XStandardType = this.cardPropertyProvider.cardColor; readonly cardForegroundColor: XStandardType = this.cardPropertyProvider.cardForegroundColor; readonly cardTitle: XStandardType = this.cardPropertyProvider.cardTitle; readonly cardActionProvider: Subject = this.cardPropertyProvider.cardActionProvider; readonly cardSubTitle: XStandardType = this.cardPropertyProvider.cardSubTitle; readonly cardCssClass: XStandardType> = this.cardPropertyProvider.cardCssClass; readonly cardShowFullScreenButton: XStandardType = this.cardPropertyProvider.cardShowFullScreenButton; readonly cardEnterFullScreenButtonIcon: XStandardType = this.cardPropertyProvider.cardEnterFullScreenButtonIcon; readonly cardEnterFullScreenButtonColor: XStandardType = this.cardPropertyProvider.cardEnterFullScreenButtonColor; readonly cardExitFullScreenButtonIcon: XStandardType = this.cardPropertyProvider.cardExitFullScreenButtonIcon; readonly cardExitFullScreenButtonColor: XStandardType = this.cardPropertyProvider.cardExitFullScreenButtonColor; //#endregion // //#region XNextPrevResetHost ... // //#region Next ... readonly canNext: XStandardType = this.nextPrevResetHostPropertyProvider.canNext; readonly onNext: EventEmitter = this.nextPrevResetHostPropertyProvider.onNext; //#endregion // //#region Prev ... readonly canPrev: XStandardType = this.nextPrevResetHostPropertyProvider.canPrev; readonly onPrev: EventEmitter = this.nextPrevResetHostPropertyProvider.onPrev; //#endregion // //#region Reset ... readonly canReset: XStandardType = this.nextPrevResetHostPropertyProvider.canReset; readonly onReset: EventEmitter = this.nextPrevResetHostPropertyProvider.onReset; //#endregion //#endregion //#endregion // //#region Constructor ... constructor( protected cardPropertyProvider: XComponentCardContainer, protected nextPrevResetHostPropertyProvider: XNextPrevResetHostContainer, ) { super(); } //#endregion } // @Injectable() @Component({ template: ``, }) export class XCardNextPrevResetHostContainerComponent extends XBaseContainerComponent implements IXCardNextPrevResetHostContainer { // //#region Props ... // //#region XComponentCard ... @Input() isInPage: XStandardType = this.propertyProvider.isInPage; @Input() wrapWithCard: XStandardType = this.propertyProvider.wrapWithCard; @Input() cardShowFooter: XStandardType = this.propertyProvider.cardShowFooter; @Input() cardShowActions: XStandardType = this.propertyProvider.cardShowActions; @Input() cardColor: XStandardType = this.propertyProvider.cardColor; @Input() cardForegroundColor: XStandardType = this.propertyProvider.cardForegroundColor; @Input() cardTitle: XStandardType = this.propertyProvider.cardTitle; @Input() cardActionProvider: Subject = this.propertyProvider.cardActionProvider; @Input() cardSubTitle: XStandardType = this.propertyProvider.cardSubTitle; @Input() cardCssClass: XStandardType> = this.propertyProvider.cardCssClass; @Input() cardShowFullScreenButton: XStandardType = this.propertyProvider.cardShowFullScreenButton; @Input() cardEnterFullScreenButtonIcon: XStandardType = this.propertyProvider.cardEnterFullScreenButtonIcon; @Input() cardEnterFullScreenButtonColor: XStandardType = this.propertyProvider.cardEnterFullScreenButtonColor; @Input() cardExitFullScreenButtonIcon: XStandardType = this.propertyProvider.cardExitFullScreenButtonIcon; @Input() cardExitFullScreenButtonColor: XStandardType = this.propertyProvider.cardExitFullScreenButtonColor; //#endregion // //#region XNextPrevResetHost ... // //#region Next ... @Input() canNext: XStandardType = this.propertyProvider.canNext; @Output() onNext: EventEmitter = new EventEmitter(); //#endregion // //#region Prev ... @Input() canPrev: XStandardType = this.propertyProvider.canPrev; @Output() onPrev: EventEmitter = new EventEmitter(); //#endregion // //#region Reset ... @Input() canReset: XStandardType = this.propertyProvider.canReset; @Output() onReset: EventEmitter = new EventEmitter(); //#endregion //#endregion //#endregion // //#region Constructor ... constructor( @Inject(X_FRAMEWORK_COMPONENTS_CONFIG) public config: XFrameworkComponentsConfig, public managerService: XManagerService, public element: ElementRef, public renderer: Renderer2, public ruler: ViewportRuler, public zone: NgZone, public changeDetector: ChangeDetectorRef, protected propertyProvider: XCardNextPrevResetHostContainer, ) { super( config, managerService, element, renderer, ruler, zone, changeDetector, ); } //#endregion // //#region Abstract ... public extractProps( container?: IXCardNextPrevResetHostContainer, ): Observable { return forkJoin({ // //#region XComponentCard ... cardCssClass: this.getArrayValue( container ? container.cardCssClass : this.cardCssClass, ), isInPage: this.getValue(container ? container.isInPage : this.isInPage), wrapWithCard: this.getValue( container ? container.wrapWithCard : this.wrapWithCard, ), cardShowFooter: this.getValue( container ? container.cardShowFooter : this.cardShowFooter, ), cardShowActions: this.getValue( container ? container.cardShowActions : this.cardShowActions, ), cardColor: this.getValue( container ? container.cardColor : this.cardColor, ), cardForegroundColor: this.getValue( container ? container.cardForegroundColor : this.cardForegroundColor, ), cardTitle: this.getValue( container ? container.cardTitle : this.cardTitle, ), cardSubTitle: this.getValue( container ? container.cardSubTitle : this.cardSubTitle, ), cardShowFullScreenButton: this.getValue( container ? container.cardShowFullScreenButton : this.cardShowFullScreenButton, ), cardEnterFullScreenButtonIcon: this.getValue( container ? container.cardEnterFullScreenButtonIcon : this.cardEnterFullScreenButtonIcon, ), cardEnterFullScreenButtonColor: this.getValue( container ? container.cardEnterFullScreenButtonColor : this.cardEnterFullScreenButtonColor, ), cardExitFullScreenButtonIcon: this.getValue( container ? container.cardExitFullScreenButtonIcon : this.cardExitFullScreenButtonIcon, ), cardExitFullScreenButtonColor: this.getValue( container ? container.cardExitFullScreenButtonColor : this.cardExitFullScreenButtonColor, ), //#endregion // //#region XNextPrevResetHost ... // canNext: this.getValue(container ? container.canNext : this.canNext), canPrev: this.getValue(container ? container.canPrev : this.canPrev), canReset: this.getValue(container ? container.canReset : this.canReset), //#endregion }).pipe( map((data) => { return { // ...data, // cardActionProvider: container ? container.cardActionProvider : this.cardActionProvider, // onNext: this.onNext, onPrev: this.onPrev, onReset: this.onReset, }; }), ); } //#endregion } //#endregion // //#region Interface ... // type TXNextPrevResetContainer = IXNextContainer & IXPrevContainer & IXResetContainer; // tslint:disable-next-line:no-empty-interface export interface IXNextPrevResetContainer extends IXBaseContainer, TXNextPrevResetContainer {} @Injectable({ providedIn: 'root', }) export class XNextPrevResetContainer extends XBaseContainer implements Readonly { // //#region Props ... // //#region Next ... hasNext: XStandardType = this.nextPropertyProvider.hasNext; disableNext: XStandardType = this.nextPropertyProvider.disableNext; nextConfirmer: () => XStandardType = this.nextPropertyProvider.nextConfirmer; nextPosition: XStandardType = this.nextPropertyProvider.nextPosition; nextCssClass: XStandardType> = this.nextPropertyProvider.nextCssClass; nextButton: XStandardType> = this.nextPropertyProvider.nextButton; //#endregion // //#region Prev ... hasPrev: XStandardType = this.prevPropertyProvider.hasPrev; disablePrev: XStandardType = this.prevPropertyProvider.disablePrev; prevConfirmer: () => XStandardType = this.prevPropertyProvider.prevConfirmer; prevPosition: XStandardType = this.prevPropertyProvider.prevPosition; prevCssClass: XStandardType> = this.prevPropertyProvider.prevCssClass; prevButton: XStandardType> = this.prevPropertyProvider.prevButton; //#endregion // //#region Reset ... hasReset: XStandardType = this.resetpropertyProvider.hasReset; disableReset: XStandardType = this.resetpropertyProvider.disableReset; resetConfirmer: () => XStandardType = this.resetpropertyProvider.resetConfirmer; resetPosition: XStandardType = this.resetpropertyProvider.resetPosition; resetCssClass: XStandardType> = this.resetpropertyProvider.resetCssClass; resetButton: XStandardType> = this.resetpropertyProvider.resetButton; //#endregion //#endregion // //#region Constructor ... constructor( protected prevPropertyProvider: XPrevContainer, protected nextPropertyProvider: XNextContainer, protected resetpropertyProvider: XResetContainer, ) { super(); } //#endregion } @Injectable() @Component({ template: ``, }) export abstract class XNextPrevResetContainerComponent extends XBaseContainerComponent implements IXNextPrevResetContainer { // //#region Props ... // //#region Next ... @Input() hasNext: XStandardType = this.propertyProvider.hasNext; @Input() disableNext: XStandardType = this.propertyProvider.disableNext; @Input() nextConfirmer: () => XStandardType = this.propertyProvider.nextConfirmer; @Input() nextPosition: XStandardType = this.propertyProvider.nextPosition; @Input() nextCssClass: XStandardType> = this.propertyProvider.nextCssClass; @Input() nextButton: XStandardType> = this.propertyProvider.nextButton; //#endregion // //#region Prev ... @Input() hasPrev: XStandardType = this.propertyProvider.hasPrev; @Input() disablePrev: XStandardType = this.propertyProvider.disablePrev; @Input() prevConfirmer: () => XStandardType = this.propertyProvider.prevConfirmer; @Input() prevPosition: XStandardType = this.propertyProvider.prevPosition; @Input() prevCssClass: XStandardType> = this.propertyProvider.prevCssClass; @Input() prevButton: XStandardType> = this.propertyProvider.prevButton; //#endregion // //#region Reset ... @Input() hasReset: XStandardType = this.propertyProvider.hasReset; @Input() disableReset: XStandardType = this.propertyProvider.disableReset; @Input() resetConfirmer: () => XStandardType = this.propertyProvider.resetConfirmer; @Input() resetPosition: XStandardType = this.propertyProvider.resetPosition; @Input() resetCssClass: XStandardType> = this.propertyProvider.resetCssClass; @Input() resetButton: XStandardType> = this.propertyProvider.resetButton; //#endregion //#endregion // //#region Constructor ... public constructor( @Inject(X_FRAMEWORK_COMPONENTS_CONFIG) public config: XFrameworkComponentsConfig, public managerService: XManagerService, public element: ElementRef, public renderer: Renderer2, public ruler: ViewportRuler, public zone: NgZone, public changeDetector: ChangeDetectorRef, protected propertyProvider: XNextPrevResetContainer, ) { super( config, managerService, element, renderer, ruler, zone, changeDetector, ); } //#endregion // //#region Abstract ... public extractProps( container?: IXNextPrevResetContainer, ): Observable { return forkJoin({ // hasNext: this.getValue(container ? container.hasNext : this.hasNext), disableNext: this.getValue( container ? container.disableNext : this.disableNext, ), nextConfirmer: this.getValue( container ? container.nextConfirmer : this.nextConfirmer, ), nextPosition: this.getValue( container ? container.nextPosition : this.nextPosition, ), nextCssClass: this.getValue( container ? container.nextCssClass : this.nextCssClass, ), nextButton: this.getValue( container ? container.nextButton : this.nextButton, ), hasPrev: this.getValue(container ? container.hasPrev : this.hasPrev), disablePrev: this.getValue( container ? container.disablePrev : this.disablePrev, ), prevConfirmer: this.getValue( container ? container.prevConfirmer : this.prevConfirmer, ), prevPosition: this.getValue( container ? container.prevPosition : this.prevPosition, ), prevCssClass: this.getValue( container ? container.prevCssClass : this.prevCssClass, ), prevButton: this.getValue( container ? container.prevButton : this.prevButton, ), hasReset: this.getValue(container ? container.hasReset : this.hasReset), disableReset: this.getValue( container ? container.disableReset : this.disableReset, ), resetConfirmer: this.getValue( container ? container.resetConfirmer : this.resetConfirmer, ), resetPosition: this.getValue( container ? container.resetPosition : this.resetPosition, ), resetCssClass: this.getValue( container ? container.resetCssClass : this.resetCssClass, ), resetButton: this.getValue( container ? container.resetButton : this.resetButton, ), }).pipe( map((data) => { return { // ...data, // }; }), ); } //#endregion } //#endregion // //#region IXNextPrevResetAndHostContainer ... type TXNextPrevResetAndHostContainer = IXNextPrevResetContainer & IXCardNextPrevResetHostContainer; export interface IXNextPrevResetAndHostContainer extends IXBaseContainer, TXNextPrevResetAndHostContainer {} @Injectable({ providedIn: 'root', }) export class XNextPrevResetAndHostContainer extends XBaseContainer implements Readonly { // //#region Props ... // //#region Inteface ... // //#region Next ... hasNext: XStandardType = this.nextPrevResetPropertyProvider.hasNext; disableNext: XStandardType = this.nextPrevResetPropertyProvider.disableNext; nextConfirmer: () => XStandardType = this.nextPrevResetPropertyProvider.nextConfirmer; nextPosition: XStandardType = this.nextPrevResetPropertyProvider.nextPosition; nextCssClass: XStandardType> = this.nextPrevResetPropertyProvider.nextCssClass; nextButton: XStandardType> = this.nextPrevResetPropertyProvider.nextButton; //#endregion // //#region Prev ... hasPrev: XStandardType = this.nextPrevResetPropertyProvider.hasPrev; disablePrev: XStandardType = this.nextPrevResetPropertyProvider.disablePrev; prevConfirmer: () => XStandardType = this.nextPrevResetPropertyProvider.prevConfirmer; prevPosition: XStandardType = this.nextPrevResetPropertyProvider.prevPosition; prevCssClass: XStandardType> = this.nextPrevResetPropertyProvider.prevCssClass; prevButton: XStandardType> = this.nextPrevResetPropertyProvider.prevButton; //#endregion // //#region Reset ... hasReset: XStandardType = this.nextPrevResetPropertyProvider.hasReset; disableReset: XStandardType = this.nextPrevResetPropertyProvider.disableReset; resetConfirmer: () => XStandardType = this.nextPrevResetPropertyProvider.resetConfirmer; resetPosition: XStandardType = this.nextPrevResetPropertyProvider.resetPosition; resetCssClass: XStandardType> = this.nextPrevResetPropertyProvider.resetCssClass; resetButton: XStandardType> = this.nextPrevResetPropertyProvider.resetButton; //#endregion //#endregion // //#region Host ... // //#region Next ... readonly canNext: XStandardType = this.cardNextPrevResetPropertyProvider.canNext; readonly onNext: EventEmitter = this.cardNextPrevResetPropertyProvider.onNext; //#endregion // //#region Prev ... readonly canPrev: XStandardType = this.cardNextPrevResetPropertyProvider.canPrev; readonly onPrev: EventEmitter = this.cardNextPrevResetPropertyProvider.onPrev; //#endregion // //#region Reset ... readonly canReset: XStandardType = this.cardNextPrevResetPropertyProvider.canReset; readonly onReset: EventEmitter = this.cardNextPrevResetPropertyProvider.onReset; //#endregion //#endregion // //#region XComponentCard ... readonly isInPage: XStandardType = this.cardNextPrevResetPropertyProvider.isInPage; readonly wrapWithCard: XStandardType = this.cardNextPrevResetPropertyProvider.wrapWithCard; readonly cardShowFooter: XStandardType = this.cardNextPrevResetPropertyProvider.cardShowFooter; readonly cardShowActions: XStandardType = this.cardNextPrevResetPropertyProvider.cardShowActions; readonly cardColor: XStandardType = this.cardNextPrevResetPropertyProvider.cardColor; readonly cardForegroundColor: XStandardType = this.cardNextPrevResetPropertyProvider.cardForegroundColor; readonly cardTitle: XStandardType = this.cardNextPrevResetPropertyProvider.cardTitle; readonly cardActionProvider: Subject = this.cardNextPrevResetPropertyProvider.cardActionProvider; readonly cardSubTitle: XStandardType = this.cardNextPrevResetPropertyProvider.cardSubTitle; readonly cardCssClass: XStandardType> = this.cardNextPrevResetPropertyProvider.cardCssClass; readonly cardShowFullScreenButton: XStandardType = this.cardNextPrevResetPropertyProvider.cardShowFullScreenButton; readonly cardEnterFullScreenButtonIcon: XStandardType = this.cardNextPrevResetPropertyProvider.cardEnterFullScreenButtonIcon; readonly cardEnterFullScreenButtonColor: XStandardType = this.cardNextPrevResetPropertyProvider.cardEnterFullScreenButtonColor; readonly cardExitFullScreenButtonIcon: XStandardType = this.cardNextPrevResetPropertyProvider.cardExitFullScreenButtonIcon; readonly cardExitFullScreenButtonColor: XStandardType = this.cardNextPrevResetPropertyProvider.cardExitFullScreenButtonColor; //#endregion //#endregion // //#region Constructor ... constructor( protected nextPrevResetPropertyProvider: XNextPrevResetContainer, protected cardNextPrevResetPropertyProvider: XCardNextPrevResetHostContainer, ) { super(); } //#endregion } @Injectable() @Component({ template: ``, }) export class XNextPrevResetAndHostContainerComponent extends XBaseContainerComponent implements IXNextPrevResetAndHostContainer { // //#region Props ... // //#region XComponentCard ... @Input() isInPage: XStandardType = this.propertyProvider.isInPage; @Input() wrapWithCard: XStandardType = this.propertyProvider.wrapWithCard; @Input() cardShowFooter: XStandardType = this.propertyProvider.cardShowFooter; @Input() cardShowActions: XStandardType = this.propertyProvider.cardShowActions; @Input() cardColor: XStandardType = this.propertyProvider.cardColor; @Input() cardForegroundColor: XStandardType = this.propertyProvider.cardForegroundColor; @Input() cardTitle: XStandardType = this.propertyProvider.cardTitle; @Input() cardActionProvider: Subject = this.propertyProvider.cardActionProvider; @Input() cardSubTitle: XStandardType = this.propertyProvider.cardSubTitle; @Input() cardCssClass: XStandardType> = this.propertyProvider.cardCssClass; @Input() cardShowFullScreenButton: XStandardType = this.propertyProvider.cardShowFullScreenButton; @Input() cardEnterFullScreenButtonIcon: XStandardType = this.propertyProvider.cardEnterFullScreenButtonIcon; @Input() cardEnterFullScreenButtonColor: XStandardType = this.propertyProvider.cardEnterFullScreenButtonColor; @Input() cardExitFullScreenButtonIcon: XStandardType = this.propertyProvider.cardExitFullScreenButtonIcon; @Input() cardExitFullScreenButtonColor: XStandardType = this.propertyProvider.cardExitFullScreenButtonColor; //#endregion // //#region XNextPrevResetHost ... // //#region Next ... @Input() canNext: XStandardType = this.propertyProvider.canNext; @Output() onNext: EventEmitter = new EventEmitter(); //#endregion // //#region Prev ... @Input() canPrev: XStandardType = this.propertyProvider.canPrev; @Output() onPrev: EventEmitter = new EventEmitter(); //#endregion // //#region Reset ... @Input() canReset: XStandardType = this.propertyProvider.canReset; @Output() onReset: EventEmitter = new EventEmitter(); //#endregion //#endregion // //#region Props ... // //#region Next ... @Input() hasNext: XStandardType = this.propertyProvider.hasNext; @Input() disableNext: XStandardType = this.propertyProvider.disableNext; @Input() nextConfirmer: () => XStandardType = this.propertyProvider.nextConfirmer; @Input() nextPosition: XStandardType = this.propertyProvider.nextPosition; @Input() nextCssClass: XStandardType> = this.propertyProvider.nextCssClass; @Input() nextButton: XStandardType> = this.propertyProvider.nextButton; //#endregion // //#region Prev ... @Input() hasPrev: XStandardType = this.propertyProvider.hasPrev; @Input() disablePrev: XStandardType = this.propertyProvider.disablePrev; @Input() prevConfirmer: () => XStandardType = this.propertyProvider.prevConfirmer; @Input() prevPosition: XStandardType = this.propertyProvider.prevPosition; @Input() prevCssClass: XStandardType> = this.propertyProvider.prevCssClass; @Input() prevButton: XStandardType> = this.propertyProvider.prevButton; //#endregion // //#region Reset ... @Input() hasReset: XStandardType = this.propertyProvider.hasReset; @Input() disableReset: XStandardType = this.propertyProvider.disableReset; @Input() resetConfirmer: () => XStandardType = this.propertyProvider.resetConfirmer; @Input() resetPosition: XStandardType = this.propertyProvider.resetPosition; @Input() resetCssClass: XStandardType> = this.propertyProvider.resetCssClass; @Input() resetButton: XStandardType> = this.propertyProvider.resetButton; //#endregion //#endregion //#endregion // //#region Constructor ... constructor( @Inject(X_FRAMEWORK_COMPONENTS_CONFIG) public config: XFrameworkComponentsConfig, public managerService: XManagerService, public element: ElementRef, public renderer: Renderer2, public ruler: ViewportRuler, public zone: NgZone, public changeDetector: ChangeDetectorRef, protected propertyProvider: XNextPrevResetAndHostContainer, ) { super( config, managerService, element, renderer, ruler, zone, changeDetector, ); } //#endregion // //#region Abstract ... public extractProps( container?: IXNextPrevResetAndHostContainer, ): Observable { return forkJoin({ // //#region XComponentCard ... cardCssClass: this.getArrayValue( container ? container.cardCssClass : this.cardCssClass, ), isInPage: this.getValue(container ? container.isInPage : this.isInPage), wrapWithCard: this.getValue( container ? container.wrapWithCard : this.wrapWithCard, ), cardShowFooter: this.getValue( container ? container.cardShowFooter : this.cardShowFooter, ), cardShowActions: this.getValue( container ? container.cardShowActions : this.cardShowActions, ), cardColor: this.getValue( container ? container.cardColor : this.cardColor, ), cardForegroundColor: this.getValue( container ? container.cardForegroundColor : this.cardForegroundColor, ), cardTitle: this.getValue( container ? container.cardTitle : this.cardTitle, ), cardSubTitle: this.getValue( container ? container.cardSubTitle : this.cardSubTitle, ), cardShowFullScreenButton: this.getValue( container ? container.cardShowFullScreenButton : this.cardShowFullScreenButton, ), cardEnterFullScreenButtonIcon: this.getValue( container ? container.cardEnterFullScreenButtonIcon : this.cardEnterFullScreenButtonIcon, ), cardEnterFullScreenButtonColor: this.getValue( container ? container.cardEnterFullScreenButtonColor : this.cardEnterFullScreenButtonColor, ), cardExitFullScreenButtonIcon: this.getValue( container ? container.cardExitFullScreenButtonIcon : this.cardExitFullScreenButtonIcon, ), cardExitFullScreenButtonColor: this.getValue( container ? container.cardExitFullScreenButtonColor : this.cardExitFullScreenButtonColor, ), //#endregion // //#region XNextPrevResetHost ... // canNext: this.getValue(container ? container.canNext : this.canNext), canPrev: this.getValue(container ? container.canPrev : this.canPrev), canReset: this.getValue(container ? container.canReset : this.canReset), //#endregion // //#region Interface ... // hasNext: this.getValue(container ? container.hasNext : this.hasNext), disableNext: this.getValue( container ? container.disableNext : this.disableNext, ), nextConfirmer: this.getValue( container ? container.nextConfirmer : this.nextConfirmer, ), nextPosition: this.getValue( container ? container.nextPosition : this.nextPosition, ), nextCssClass: this.getValue( container ? container.nextCssClass : this.nextCssClass, ), nextButton: this.getValue( container ? container.nextButton : this.nextButton, ), hasPrev: this.getValue(container ? container.hasPrev : this.hasPrev), disablePrev: this.getValue( container ? container.disablePrev : this.disablePrev, ), prevConfirmer: this.getValue( container ? container.prevConfirmer : this.prevConfirmer, ), prevPosition: this.getValue( container ? container.prevPosition : this.prevPosition, ), prevCssClass: this.getValue( container ? container.prevCssClass : this.prevCssClass, ), prevButton: this.getValue( container ? container.prevButton : this.prevButton, ), hasReset: this.getValue(container ? container.hasReset : this.hasReset), disableReset: this.getValue( container ? container.disableReset : this.disableReset, ), resetConfirmer: this.getValue( container ? container.resetConfirmer : this.resetConfirmer, ), resetPosition: this.getValue( container ? container.resetPosition : this.resetPosition, ), resetCssClass: this.getValue( container ? container.resetCssClass : this.resetCssClass, ), resetButton: this.getValue( container ? container.resetButton : this.resetButton, ), //#endregion }).pipe( map((data) => { return { // ...data, // cardActionProvider: container ? container.cardActionProvider : this.cardActionProvider, // onNext: this.onNext, onPrev: this.onPrev, onReset: this.onReset, }; }), ); } //#endregion } //#endregion //#endregion