{"version":3,"file":"pad-ui-lib-dialog.mjs","sources":["../../../components/dialog/dialog-config.ts","../../../components/dialog/dialog-content.directive.ts","../../../components/dialog/dialog.constants.ts","../../../components/dialog/dialog-ref.ts","../../../components/dialog/dialog-container.component.ts","../../../components/dialog/dialog-container.component.html","../../../components/dialog/dialog-injector.ts","../../../components/dialog/dialog.service.ts","../../../components/dialog/ui/dialog-footer.component.ts","../../../components/dialog/ui/dialog-footer.html","../../../components/dialog/ui/dialog-header.component.ts","../../../components/dialog/ui/dialog-header.html","../../../components/dialog/dialog.module.ts","../../../components/dialog/pad-ui-lib-dialog.ts"],"sourcesContent":["import { OverlayConfig } from \"@angular/cdk/overlay\";\nimport { Injector, ViewContainerRef } from \"@angular/core\";\nimport { PadSafeAny } from \"pad-ui-lib/core/type\";\n\nexport class DialogConfig<TData = PadSafeAny> {\n  header = \"\"; // title of dialog\n  closable = true; // determine whether the dialog is closable or not\n  containerAnimationTiming = 0.3; // fade\n  contentAnimationTiming = 0.2; // zoom\n  animationChildDelay = 0;\n  data?: TData;\n  overlayConfig?: OverlayConfig;\n  injector?: Injector;\n  viewContainerRef?: ViewContainerRef;\n}\n","import { Directive, ViewContainerRef } from \"@angular/core\";\n\n@Directive({\n  selector: \"[padDialogContent]\",\n})\nexport class PadContentDialogDirective {\n  constructor(public viewContainerRef: ViewContainerRef) {} // contentInsertionPoint\n}\n","import {\n  animate,\n  animateChild,\n  animation,\n  group,\n  keyframes,\n  query,\n  style,\n  transition,\n  trigger,\n  useAnimation,\n} from \"@angular/animations\";\n\nexport const zoomAnimation = () =>\n  trigger(\"zoom\", [\n    transition(\n      `* => ${AnimationState.Enter}`,\n      useAnimation(\n        animation([\n          animate(\n            \"{{ timing }}s 0s\",\n            keyframes([\n              style({\n                opacity: 0,\n                transform: \"scale3d(.3, .3, .3)\",\n                offset: 0,\n              }),\n              style({\n                opacity: 1,\n                transform: \"scale3d(1, 1, 1)\",\n                offset: 0.5,\n              }),\n            ])\n          ),\n        ]),\n        { params: { timing: \"{{timing}}\" } }\n      )\n    ),\n    transition(\n      `* => ${AnimationState.Leave}`,\n      useAnimation(\n        animation([\n          animate(\n            \"{{ timing }}s 0s\",\n            keyframes([\n              style({\n                opacity: 1,\n                offset: 0,\n              }),\n              style({\n                opacity: 0,\n                transform: \"scale3d(.3, .3, .3)\",\n                offset: 0.5,\n              }),\n              style({\n                opacity: 0,\n                offset: 1,\n              }),\n            ])\n          ),\n        ]),\n        { params: { timing: \"{{timing}}\" } }\n      )\n    ),\n  ]);\n\nexport const fadeAnimation = () =>\n  trigger(\"fade\", [\n    transition(\n      `* => ${AnimationState.Enter}`,\n      group([\n        useAnimation(\n          animation(\n            animate(\n              \"{{timing}}s 0s\",\n              keyframes([\n                style({\n                  opacity: 0,\n                  transform: \"translate3d(0, 0, 0)\",\n                  offset: 0,\n                }),\n                style({\n                  opacity: 1,\n                  transform: \"translate3d(0, 0, 0)\",\n                  offset: 1,\n                }),\n              ])\n            )\n          ),\n          { params: { timing: \"{{timing}}\" } }\n        ),\n        query(\"@zoom\", [animateChild({ delay: \"{{delayChild}}\" })], {\n          optional: true,\n        }),\n      ])\n    ),\n    transition(\n      `* => ${AnimationState.Leave}`,\n      group([\n        useAnimation(\n          animation(\n            animate(\n              \"{{timing}}s 0s\",\n              keyframes([\n                style({\n                  opacity: 1,\n                  transform: \"translate3d(0, 0, 0)\",\n                  offset: 0,\n                }),\n                style({\n                  opacity: 0,\n                  transform: \"translate3d(0, 0, 0)\",\n                  offset: 1,\n                }),\n              ])\n            )\n          ),\n          { params: { timing: \"{{timing}}\" } }\n        ),\n        query(\"@zoom\", [animateChild({ delay: \"{{delayChild}}\" })], {\n          optional: true,\n        }),\n      ])\n    ),\n  ]);\n\nexport enum AnimationState {\n  Enter = \"enter\",\n  Leave = \"leave\",\n}\n","import { OverlayRef } from \"@angular/cdk/overlay\";\nimport { PadSafeAny } from \"pad-ui-lib/core/type\";\nimport { filter, map, Observable, race, Subject, take } from \"rxjs\";\nimport { DialogConfig } from \"./dialog-config\";\nimport PadDialogContainerComponent from \"./dialog-container.component\";\nimport { AnimationState } from \"./dialog.constants\";\nconst AnimationPhase = {\n  START: \"start\",\n  DONE: \"done\",\n};\n\nexport class DialogRef<TReturnType = PadSafeAny, TContentComponent = PadSafeAny> {\n  private readonly _beforeClosedSubject = new Subject<void>();\n  private readonly _afterClosedSubject = new Subject<TReturnType | null>();\n  private _result: TReturnType | null = null;\n  componentInstance: PadDialogContainerComponent<TContentComponent> | null = null;\n\n  constructor(\n    private readonly overlayRef: OverlayRef,\n    private readonly config: DialogConfig\n  ) {\n    if (config.closable) {\n      race(\n        overlayRef.backdropClick().pipe(map(() => undefined))\n        // overlayRef.keydownEvents().pipe(\n        //   filter(event => event.code === EventKey.SPACE && !hasModifierKey(event)),\n        //   map(() => undefined)\n        // )\n      )\n        .pipe(take(1))\n        .subscribe(this.close.bind(this));\n    }\n\n    overlayRef.detachments().subscribe(() => {\n      this._afterClosedSubject.next(this._result);\n      this._afterClosedSubject.complete();\n      this.componentInstance = null;\n    });\n  }\n\n  get beforeClosed$(): Observable<unknown> {\n    return this._beforeClosedSubject.asObservable();\n  }\n\n  get afterClosed$(): Observable<TReturnType | null> {\n    return this._afterClosedSubject.asObservable();\n  }\n\n  close(data?: TReturnType) {\n    this._result = data ?? null;\n    if (this.componentInstance) {\n      this.componentInstance.animationStateChanged\n        .pipe(\n          filter(event => event.phaseName === AnimationPhase.START),\n          take(1)\n        )\n        .subscribe(() => {\n          this._beforeClosedSubject.next();\n          this._beforeClosedSubject.complete();\n          this.overlayRef.detachBackdrop();\n        });\n\n      this.componentInstance.animationStateChanged\n        .pipe(\n          filter(\n            event =>\n              event.phaseName === AnimationPhase.DONE &&\n              event.toState === AnimationState.Leave\n          ),\n          take(1)\n        )\n        .subscribe(this.overlayRef.dispose.bind(this.overlayRef));\n\n      this.componentInstance.startExitAnimation();\n    } else {\n      throw new Error(\"componentInstance not exist\");\n    }\n  }\n}\n","import { AnimationEvent } from \"@angular/animations\";\nimport {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ComponentRef,\n  EventEmitter,\n  HostBinding,\n  HostListener,\n  OnDestroy,\n  Type,\n  ViewChild,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nimport { PadSafeAny } from \"pad-ui-lib/core/type\";\nimport { DialogConfig } from \"./dialog-config\";\nimport { PadContentDialogDirective } from \"./dialog-content.directive\";\nimport { DialogRef } from \"./dialog-ref\";\nimport { AnimationState, fadeAnimation, zoomAnimation } from \"./dialog.constants\";\n\n@Component({\n  selector: \"pad-dialog-container\",\n  templateUrl: \"./dialog-container.component.html\",\n  styleUrls: [\"./dialog-container.component.scss\"],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  animations: [zoomAnimation(), fadeAnimation()],\n})\nexport default class PadDialogContainerComponent<TContentComponent = PadSafeAny>\n  implements AfterViewInit, OnDestroy\n{\n  @ViewChild(PadContentDialogDirective, { static: false })\n  contentInsertionPoint!: PadContentDialogDirective;\n\n  animationState = AnimationState.Enter;\n  animationStateChanged = new EventEmitter<AnimationEvent>();\n  contentComponentType!: Type<TContentComponent>;\n\n  private _contentComponentRef?: ComponentRef<TContentComponent>;\n\n  @HostBinding(\"@fade\") get hostAnimation() {\n    // [@fade]\n    return {\n      value: this.animationState,\n      params: {\n        timing: this.dialogConfig.containerAnimationTiming,\n        delayChild: this.dialogConfig.animationChildDelay,\n      },\n    };\n  }\n\n  @HostListener(\"@fade.start\", [\"$event\"]) // (@fade.start)=\"onAnimationStart($event)\"\n  onAnimationStart(event: AnimationEvent) {\n    this.animationStateChanged.emit(event);\n  }\n\n  @HostListener(\"@fade.done\", [\"$event\"])\n  onAnimationDone(event: AnimationEvent) {\n    this.animationStateChanged.emit(event);\n  }\n\n  constructor(\n    public readonly dialogConfig: DialogConfig,\n    private readonly dialogRef: DialogRef,\n    private readonly cdr: ChangeDetectorRef\n  ) {}\n\n  ngAfterViewInit(): void {\n    this._loadContentComponent();\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy(): void {\n    this._contentComponentRef?.destroy();\n  }\n\n  startExitAnimation(): void {\n    this.animationState = AnimationState.Leave;\n    this.cdr.markForCheck();\n  }\n\n  onCloseClick() {\n    this.closeDialog();\n  }\n\n  private closeDialog() {\n    this.dialogRef.close();\n  }\n\n  private _loadContentComponent(): void {\n    if (!this._contentComponentRef) {\n      // const factory = this.\n      const vcr = this.contentInsertionPoint.viewContainerRef;\n      vcr.clear();\n      this._contentComponentRef = vcr.createComponent(this.contentComponentType);\n    }\n  }\n}\n","<div\n  class=\"pad-dialog-container\"\n  [@zoom]=\"{\n    value: animationState,\n    params: { timing: dialogConfig.contentAnimationTiming }\n  }\">\n  <ng-container padDialogContent></ng-container>\n</div>\n","import { InjectionToken } from \"@angular/core\";\nimport { PadSafeAny } from \"pad-ui-lib/core/type\";\n\nexport const PAD_DIALOG_DATA = new InjectionToken<PadSafeAny>(\"PadDialogData\");\n","import { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Injectable, Injector, Type } from \"@angular/core\";\nimport { PadSafeAny } from \"pad-ui-lib/core/type\";\nimport { DialogConfig } from \"./dialog-config\";\nimport PadDialogContainerComponent from \"./dialog-container.component\";\nimport { PAD_DIALOG_DATA } from \"./dialog-injector\";\nimport { DialogRef } from \"./dialog-ref\";\n\n@Injectable()\nexport class PadDialogService {\n  private readonly defaultDialogConfig: DialogConfig;\n  constructor(\n    private readonly overlay: Overlay,\n    private readonly injector: Injector\n  ) {\n    this.defaultDialogConfig = new DialogConfig();\n    this.defaultDialogConfig.overlayConfig = new OverlayConfig({\n      disposeOnNavigation: true,\n      hasBackdrop: true,\n      panelClass: \"pad-dialog-panel\",\n      backdropClass: \"pad-dialog-backdrop\",\n      scrollStrategy: overlay.scrollStrategies.block(),\n      positionStrategy: overlay\n        .position()\n        .global()\n        .centerVertically()\n        .centerHorizontally(),\n    });\n  }\n\n  open<TReturnType = PadSafeAny, TContentComponent = PadSafeAny>(\n    component: Type<TContentComponent>,\n    config?: DialogConfig\n  ): DialogRef<TReturnType, TContentComponent> {\n    const mergeConfig = this.getMergeConfig(config);\n    const overlayRef = this.overlay.create(mergeConfig.overlayConfig);\n    const dialogRef = new DialogRef<TReturnType, TContentComponent>(\n      overlayRef,\n      mergeConfig\n    );\n    dialogRef.componentInstance = this.attachDialogContainer(\n      overlayRef,\n      component,\n      dialogRef,\n      mergeConfig\n    );\n\n    return dialogRef;\n  }\n\n  private attachDialogContainer<TContentComponent = unknown>(\n    overlayRef: OverlayRef,\n    component: Type<TContentComponent>,\n    dialogRef: DialogRef,\n    dialogConfig: DialogConfig\n  ) {\n    const injector = this.createInjector(dialogRef, dialogConfig);\n    const portal = new ComponentPortal(PadDialogContainerComponent, null, injector);\n    const containerRef = overlayRef.attach(portal);\n    containerRef.instance.contentComponentType = component;\n    return containerRef.instance;\n  }\n\n  private createInjector(dialogRef: DialogRef, dialogConfig: DialogConfig): Injector {\n    return Injector.create({\n      providers: [\n        {\n          provide: PAD_DIALOG_DATA,\n          useValue: dialogConfig.data,\n        },\n        {\n          provide: DialogRef,\n          useValue: dialogRef,\n        },\n        {\n          provide: DialogConfig,\n          useValue: dialogConfig,\n        },\n      ],\n      parent: dialogConfig.injector ?? this.injector,\n    });\n  }\n\n  private getMergeConfig(config?: Partial<DialogConfig>): DialogConfig {\n    if (config == null) {\n      return this.defaultDialogConfig;\n    }\n\n    return {\n      ...this.defaultDialogConfig,\n      ...config,\n      overlayConfig: {\n        ...this.defaultDialogConfig.overlayConfig,\n        ...(config?.overlayConfig || {}),\n      },\n    };\n  }\n}\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type PadDialogFooterLayout = \"row\" | \"column\";\n\n@Component({\n  selector: \"pad-dialog-footer\",\n  exportAs: \"padDialogFooter\",\n  templateUrl: \"./dialog-footer.html\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: [\"./dialog-footer.scss\"],\n  host: {\n    class: \"pad-dialog-footer\",\n    \"[class.not-auto-responsive]\": \"notAutoResponsive\",\n    \"[class.pad-dialog-footer-layout-row]\": `layout === 'row'`,\n    \"[class.pad-dialog-footer-layout-column]\": `layout === 'column'`,\n  },\n})\nexport class PadDialogFooterComponent {\n  @Input() saveText = \"Save\";\n  @Input() layout: PadDialogFooterLayout = \"row\";\n  @Input()\n  get notAutoResponsive(): boolean {\n    return this._notAutoResponsive;\n  }\n  set notAutoResponsive(value: BooleanInput) {\n    this._notAutoResponsive = coerceBooleanProperty(value);\n  }\n  private _notAutoResponsive = false;\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() close = new EventEmitter<void>();\n  @Output() save = new EventEmitter<void>();\n}\n","<button\n  class=\"pad-dialog-footer__button\"\n  (click)=\"close.next()\"\n  pad-button\n  padColor=\"gray\"\n  padStyle=\"outline\">\n  Cancel\n</button>\n<button class=\"pad-dialog-footer__button\" (click)=\"save.next()\" pad-button>\n  {{ saveText }}\n</button>\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n  ViewEncapsulation,\n} from \"@angular/core\";\n\nexport type PadDialogHeaderLayout = \"row\" | \"column\";\n\n@Component({\n  selector: \"pad-dialog-header\",\n  exportAs: \"padDialogHeader\",\n  templateUrl: \"./dialog-header.html\",\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: [\"./dialog-header.scss\"],\n  host: {\n    class: \"pad-dialog-header\",\n    \"[class.not-auto-responsive]\": \"notAutoResponsive\",\n    \"[class.pad-dialog-header-layout-row]\": `layout === 'row'`,\n    \"[class.pad-dialog-header-layout-column]\": `layout === 'column'`,\n  },\n})\nexport class PadDialogHeaderComponent {\n  @Input() iconKey!: string;\n  @Input({ required: true }) title!: string;\n  @Input() subTitle!: string;\n  @Input() layout: PadDialogHeaderLayout = \"row\";\n  @Input()\n  get notAutoResponsive(): boolean {\n    return this._notAutoResponsive;\n  }\n  set notAutoResponsive(value: BooleanInput) {\n    this._notAutoResponsive = coerceBooleanProperty(value);\n  }\n  private _notAutoResponsive = false;\n\n  // eslint-disable-next-line @angular-eslint/no-output-native\n  @Output() close = new EventEmitter<void>();\n}\n","<div *ngIf=\"iconKey\" class=\"pad-dialog-header__left\">\n  <pad-featured-icon padSize=\"lg\">\n    <pad-icon [key]=\"iconKey\" padSize=\"lg\"></pad-icon>\n  </pad-featured-icon>\n</div>\n<div class=\"pad-dialog-header__right\">\n  <h4 class=\"pad-dialog-header__title\">{{ title }}</h4>\n  <p class=\"pad-dialog-header__sub-title\">{{ subTitle }}</p>\n</div>\n\n<button\n  (click)=\"close.next()\"\n  class=\"pad-dialog-header__btn-close\"\n  pad-icon-button\n  padStyle=\"basic\">\n  <pad-icon key=\"x-close\" padSize=\"lg\"></pad-icon>\n</button>\n","import { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\n\nimport { PadButtonModule } from \"pad-ui-lib/button\";\nimport { PadIconModule } from \"pad-ui-lib/icon\";\n\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport PadDialogContainerComponent from \"./dialog-container.component\";\nimport { PadContentDialogDirective } from \"./dialog-content.directive\";\nimport { PadDialogService } from \"./dialog.service\";\nimport { PadDialogFooterComponent } from \"./ui/dialog-footer.component\";\nimport { PadDialogHeaderComponent } from \"./ui/dialog-header.component\";\n// TODO: Restrictions on the use of 'any' type in the dialog module\n@NgModule({\n  declarations: [\n    PadContentDialogDirective,\n    PadDialogContainerComponent,\n    PadDialogHeaderComponent,\n    PadDialogFooterComponent,\n  ],\n  providers: [PadDialogService],\n  exports: [PadDialogHeaderComponent, PadDialogFooterComponent],\n  imports: [CommonModule, OverlayModule, PadButtonModule, PadIconModule],\n})\nexport class PadDialogModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DialogConfig","i2.DialogRef","i3.PadContentDialogDirective","i1","i2"],"mappings":"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"}