ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
1 lines • 45.4 kB
Source Map (JSON)
{"version":3,"file":"ng-zorro-antd-drawer.mjs","sources":["../../components/drawer/drawer-content.directive.ts","../../components/drawer/drawer-options.ts","../../components/drawer/drawer-ref.ts","../../components/drawer/drawer.component.ts","../../components/drawer/drawer.service.ts","../../components/drawer/drawer.module.ts","../../components/drawer/public-api.ts","../../components/drawer/ng-zorro-antd-drawer.ts"],"sourcesContent":["/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Directive, TemplateRef } from '@angular/core';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\n@Directive({\n selector: '[nzDrawerContent]',\n exportAs: 'nzDrawerContent'\n})\nexport class NzDrawerContentDirective {\n constructor(public templateRef: TemplateRef<NzSafeAny>) {}\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Direction } from '@angular/cdk/bidi';\nimport { InjectionToken, TemplateRef, Type } from '@angular/core';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { NzDrawerRef } from './drawer-ref';\n\nexport const DRAWER_DEFAULT_SIZE = 378;\nexport const DRAWER_LARGE_SIZE = 736;\nexport type NzDrawerPlacement = 'left' | 'right' | 'top' | 'bottom';\nexport type NzDrawerSize = 'default' | 'large';\n\nexport interface NzDrawerOptionsOfComponent<T = NzSafeAny, D = NzSafeAny> {\n nzClosable?: boolean;\n nzMaskClosable?: boolean;\n nzCloseOnNavigation?: boolean;\n nzDirection?: Direction;\n nzMask?: boolean;\n nzKeyboard?: boolean;\n nzNoAnimation?: boolean;\n nzTitle?: string | TemplateRef<{}>;\n nzExtra?: string | TemplateRef<{}>;\n nzFooter?: string | TemplateRef<{}>;\n nzContent?: TemplateRef<{ $implicit: D; drawerRef: NzDrawerRef }> | Type<T>;\n /**@Deprecated**/\n nzContentParams?: Partial<T & D>;\n nzData?: D;\n nzMaskStyle?: object;\n nzBodyStyle?: object;\n nzWrapClassName?: string;\n nzSize?: NzDrawerSize;\n nzWidth?: number | string;\n nzHeight?: number | string;\n nzPlacement?: NzDrawerPlacement;\n nzZIndex?: number;\n nzOffsetX?: number;\n nzOffsetY?: number;\n}\n\nexport interface NzDrawerOptions<T = NzSafeAny, D = NzSafeAny> extends NzDrawerOptionsOfComponent<T, D> {\n nzOnCancel?(): Promise<NzSafeAny>;\n}\n\nexport const NZ_DRAWER_DATA = new InjectionToken<NzSafeAny>('NZ_DRAWER_DATA');\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { ComponentRef, TemplateRef } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { NzDrawerPlacement } from './drawer-options';\n\nexport abstract class NzDrawerRef<T = NzSafeAny, R = NzSafeAny> {\n abstract afterClose: Observable<R | undefined>;\n abstract afterOpen: Observable<void>;\n abstract close(result?: R): void;\n abstract open(): void;\n abstract getContentComponent(): T | null;\n abstract getContentComponentRef(): Readonly<ComponentRef<T>> | null;\n\n abstract nzClosable?: boolean;\n abstract nzNoAnimation?: boolean;\n abstract nzMaskClosable?: boolean;\n abstract nzKeyboard?: boolean;\n abstract nzMask?: boolean;\n abstract nzTitle?: string | TemplateRef<{}>;\n abstract nzPlacement?: NzDrawerPlacement;\n abstract nzMaskStyle?: object;\n abstract nzBodyStyle?: object;\n abstract nzWrapClassName?: string;\n abstract nzWidth?: number | string;\n abstract nzHeight?: number | string;\n abstract nzZIndex?: number | string;\n abstract nzOffsetX?: number | string;\n abstract nzOffsetY?: number | string;\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { CdkScrollable, Overlay, OverlayConfig, OverlayKeyboardDispatcher, OverlayRef } from '@angular/cdk/overlay';\nimport { CdkPortalOutlet, ComponentPortal, PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ContentChild,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n Type,\n ViewChild,\n ViewContainerRef,\n booleanAttribute,\n inject\n} from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { drawerMaskMotion } from 'ng-zorro-antd/core/animation';\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { overlayZIndexSetter } from 'ng-zorro-antd/core/overlay';\nimport { NgStyleInterface, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { isTemplateRef, toCssPixel } from 'ng-zorro-antd/core/util';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\n\nimport { NzDrawerContentDirective } from './drawer-content.directive';\nimport {\n DRAWER_DEFAULT_SIZE,\n DRAWER_LARGE_SIZE,\n NZ_DRAWER_DATA,\n NzDrawerOptionsOfComponent,\n NzDrawerPlacement,\n NzDrawerSize\n} from './drawer-options';\nimport { NzDrawerRef } from './drawer-ref';\n\nexport const DRAWER_ANIMATE_DURATION = 300;\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'drawer';\n\n@Component({\n selector: 'nz-drawer',\n exportAs: 'nzDrawer',\n template: `\n <ng-template #drawerTemplate>\n <div\n class=\"ant-drawer\"\n [nzNoAnimation]=\"nzNoAnimation\"\n [class.ant-drawer-rtl]=\"dir === 'rtl'\"\n [class.ant-drawer-open]=\"isOpen\"\n [class.no-mask]=\"!nzMask\"\n [class.ant-drawer-top]=\"nzPlacement === 'top'\"\n [class.ant-drawer-bottom]=\"nzPlacement === 'bottom'\"\n [class.ant-drawer-right]=\"nzPlacement === 'right'\"\n [class.ant-drawer-left]=\"nzPlacement === 'left'\"\n [style.transform]=\"offsetTransform\"\n [style.transition]=\"placementChanging ? 'none' : null\"\n [style.zIndex]=\"nzZIndex\"\n >\n @if (nzMask && isOpen) {\n <div @drawerMaskMotion class=\"ant-drawer-mask\" (click)=\"maskClick()\" [style]=\"nzMaskStyle\"></div>\n }\n <div\n class=\"ant-drawer-content-wrapper {{ nzWrapClassName }}\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.transform]=\"transform\"\n [style.transition]=\"placementChanging ? 'none' : null\"\n >\n <div class=\"ant-drawer-content\">\n <div class=\"ant-drawer-wrapper-body\" [style.height]=\"isLeftOrRight ? '100%' : null\">\n @if (nzTitle || nzClosable) {\n <div class=\"ant-drawer-header\" [class.ant-drawer-header-close-only]=\"!nzTitle\">\n <div class=\"ant-drawer-header-title\">\n @if (nzClosable) {\n <button (click)=\"closeClick()\" aria-label=\"Close\" class=\"ant-drawer-close\">\n <ng-container *nzStringTemplateOutlet=\"nzCloseIcon; let closeIcon\">\n <nz-icon [nzType]=\"closeIcon\" />\n </ng-container>\n </button>\n }\n\n @if (nzTitle) {\n <div class=\"ant-drawer-title\">\n <ng-container *nzStringTemplateOutlet=\"nzTitle\">{{ nzTitle }}</ng-container>\n </div>\n }\n </div>\n @if (nzExtra) {\n <div class=\"ant-drawer-extra\">\n <ng-container *nzStringTemplateOutlet=\"nzExtra\">{{ nzExtra }}</ng-container>\n </div>\n }\n </div>\n }\n <div class=\"ant-drawer-body\" [style]=\"nzBodyStyle\" cdkScrollable>\n <ng-template cdkPortalOutlet />\n @if (nzContent) {\n @if (isTemplateRef(nzContent)) {\n <ng-container *ngTemplateOutlet=\"nzContent; context: templateContext\" />\n }\n } @else {\n @if (contentFromContentChild && (isOpen || inAnimation)) {\n <ng-template [ngTemplateOutlet]=\"contentFromContentChild\" />\n }\n }\n </div>\n @if (nzFooter) {\n <div class=\"ant-drawer-footer\">\n <ng-container *nzStringTemplateOutlet=\"nzFooter\">{{ nzFooter }}</ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n `,\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [drawerMaskMotion],\n imports: [NzNoAnimationDirective, NzOutletModule, NzIconModule, PortalModule, NgTemplateOutlet, CdkScrollable]\n})\nexport class NzDrawerComponent<T extends {} = NzSafeAny, R = NzSafeAny, D extends Partial<T> = NzSafeAny>\n extends NzDrawerRef<T, R>\n implements OnInit, OnDestroy, AfterViewInit, OnChanges, NzDrawerOptionsOfComponent\n{\n readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n @Input() nzContent!: TemplateRef<{ $implicit: D; drawerRef: NzDrawerRef<R> }> | Type<T>;\n @Input() nzCloseIcon: string | TemplateRef<void> = 'close';\n @Input({ transform: booleanAttribute }) nzClosable: boolean = true;\n @Input({ transform: booleanAttribute }) @WithConfig() nzMaskClosable: boolean = true;\n @Input({ transform: booleanAttribute }) @WithConfig() nzMask: boolean = true;\n @Input({ transform: booleanAttribute }) @WithConfig() nzCloseOnNavigation: boolean = true;\n @Input({ transform: booleanAttribute }) nzNoAnimation = false;\n @Input({ transform: booleanAttribute }) nzKeyboard: boolean = true;\n @Input() nzTitle?: string | TemplateRef<{}>;\n @Input() nzExtra?: string | TemplateRef<{}>;\n @Input() nzFooter?: string | TemplateRef<{}>;\n @Input() nzPlacement: NzDrawerPlacement = 'right';\n @Input() nzSize: NzDrawerSize = 'default';\n @Input() nzMaskStyle: NgStyleInterface = {};\n @Input() nzBodyStyle: NgStyleInterface = {};\n @Input() nzWrapClassName?: string;\n @Input() nzWidth?: number | string;\n @Input() nzHeight?: number | string;\n @Input() nzZIndex = 1000;\n @Input() nzOffsetX = 0;\n @Input() nzOffsetY = 0;\n private componentInstance: T | null = null;\n private componentRef: ComponentRef<T> | null = null;\n\n @Input({ transform: booleanAttribute })\n set nzVisible(value: boolean) {\n this.isOpen = value;\n }\n\n get nzVisible(): boolean {\n return this.isOpen;\n }\n\n @Output() readonly nzOnViewInit = new EventEmitter<void>();\n @Output() readonly nzOnClose = new EventEmitter<MouseEvent>();\n @Output() readonly nzVisibleChange = new EventEmitter<boolean>();\n\n @ViewChild('drawerTemplate', { static: true }) drawerTemplate!: TemplateRef<void>;\n @ViewChild(CdkPortalOutlet, { static: false }) bodyPortalOutlet?: CdkPortalOutlet;\n @ContentChild(NzDrawerContentDirective, { static: true, read: TemplateRef })\n contentFromContentChild?: TemplateRef<NzSafeAny>;\n\n private destroy$ = new Subject<void>();\n previouslyFocusedElement?: HTMLElement;\n placementChanging = false;\n placementChangeTimeoutId?: ReturnType<typeof setTimeout>;\n nzContentParams?: NzSafeAny; // only service\n nzData?: D;\n overlayRef?: OverlayRef | null;\n portal?: TemplatePortal;\n focusTrap?: FocusTrap;\n isOpen = false;\n inAnimation = false;\n templateContext: { $implicit: D | undefined; drawerRef: NzDrawerRef<R> } = {\n $implicit: undefined,\n drawerRef: this as NzDrawerRef<R>\n };\n protected isTemplateRef = isTemplateRef;\n\n get offsetTransform(): string | null {\n if (!this.isOpen || this.nzOffsetX + this.nzOffsetY === 0) {\n return null;\n }\n switch (this.nzPlacement) {\n case 'left':\n return `translateX(${this.nzOffsetX}px)`;\n case 'right':\n return `translateX(-${this.nzOffsetX}px)`;\n case 'top':\n return `translateY(${this.nzOffsetY}px)`;\n case 'bottom':\n return `translateY(-${this.nzOffsetY}px)`;\n }\n }\n\n get transform(): string | null {\n if (this.isOpen) {\n return null;\n }\n\n switch (this.nzPlacement) {\n case 'left':\n return `translateX(-100%)`;\n case 'right':\n return `translateX(100%)`;\n case 'top':\n return `translateY(-100%)`;\n case 'bottom':\n return `translateY(100%)`;\n }\n }\n\n get width(): string | null {\n if (this.isLeftOrRight) {\n const defaultWidth = this.nzSize === 'large' ? DRAWER_LARGE_SIZE : DRAWER_DEFAULT_SIZE;\n return this.nzWidth === undefined ? toCssPixel(defaultWidth) : toCssPixel(this.nzWidth);\n }\n return null;\n }\n\n get height(): string | null {\n if (!this.isLeftOrRight) {\n const defaultHeight = this.nzSize === 'large' ? DRAWER_LARGE_SIZE : DRAWER_DEFAULT_SIZE;\n return this.nzHeight === undefined ? toCssPixel(defaultHeight) : toCssPixel(this.nzHeight);\n }\n return null;\n }\n\n get isLeftOrRight(): boolean {\n return this.nzPlacement === 'left' || this.nzPlacement === 'right';\n }\n\n nzAfterOpen = new Subject<void>();\n nzAfterClose = new Subject<R | undefined>();\n\n get afterOpen(): Observable<void> {\n return this.nzAfterOpen.asObservable();\n }\n\n get afterClose(): Observable<R | undefined> {\n return this.nzAfterClose.asObservable();\n }\n\n get isNzContentTemplateRef(): boolean {\n return isTemplateRef(this.nzContent);\n }\n\n // from service config\n @WithConfig() nzDirection?: Direction = undefined;\n\n dir: Direction = 'ltr';\n private document: Document = inject(DOCUMENT);\n\n constructor(\n private cdr: ChangeDetectorRef,\n public nzConfigService: NzConfigService,\n private renderer: Renderer2,\n private overlay: Overlay,\n private injector: Injector,\n private changeDetectorRef: ChangeDetectorRef,\n private focusTrapFactory: FocusTrapFactory,\n private viewContainerRef: ViewContainerRef,\n private overlayKeyboardDispatcher: OverlayKeyboardDispatcher,\n private directionality: Directionality\n ) {\n super();\n }\n\n ngOnInit(): void {\n this.directionality.change?.pipe(takeUntil(this.destroy$)).subscribe((direction: Direction) => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.nzDirection || this.directionality.value;\n\n this.attachOverlay();\n this.updateOverlayStyle();\n this.updateBodyOverflow();\n this.templateContext = { $implicit: this.nzData || this.nzContentParams, drawerRef: this as NzDrawerRef<R> };\n this.changeDetectorRef.detectChanges();\n }\n\n ngAfterViewInit(): void {\n this.attachBodyContent();\n // The `setTimeout` triggers change detection. There's no sense to schedule the DOM timer if anyone is\n // listening to the `nzOnViewInit` event inside the template, for instance `<nz-drawer (nzOnViewInit)=\"...\">`.\n if (this.nzOnViewInit.observers.length) {\n setTimeout(() => {\n this.nzOnViewInit.emit();\n });\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { nzPlacement, nzVisible } = changes;\n if (nzVisible) {\n const value = changes.nzVisible.currentValue;\n if (value) {\n this.open();\n } else {\n this.close();\n }\n }\n if (nzPlacement && !nzPlacement.isFirstChange()) {\n this.triggerPlacementChangeCycleOnce();\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n clearTimeout(this.placementChangeTimeoutId);\n this.disposeOverlay();\n }\n\n private getAnimationDuration(): number {\n return this.nzNoAnimation ? 0 : DRAWER_ANIMATE_DURATION;\n }\n\n // Disable the transition animation temporarily when the placement changing\n private triggerPlacementChangeCycleOnce(): void {\n if (!this.nzNoAnimation) {\n this.placementChanging = true;\n this.changeDetectorRef.markForCheck();\n clearTimeout(this.placementChangeTimeoutId);\n this.placementChangeTimeoutId = setTimeout(() => {\n this.placementChanging = false;\n this.changeDetectorRef.markForCheck();\n }, this.getAnimationDuration());\n }\n }\n\n close(result?: R): void {\n this.isOpen = false;\n this.inAnimation = true;\n this.nzVisibleChange.emit(false);\n this.updateOverlayStyle();\n this.overlayKeyboardDispatcher.remove(this.overlayRef!);\n this.changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.updateBodyOverflow();\n this.restoreFocus();\n this.inAnimation = false;\n this.nzAfterClose.next(result);\n this.nzAfterClose.complete();\n this.componentInstance = null;\n this.componentRef = null;\n }, this.getAnimationDuration());\n }\n\n open(): void {\n this.attachOverlay();\n this.isOpen = true;\n this.inAnimation = true;\n this.nzVisibleChange.emit(true);\n this.overlayKeyboardDispatcher.add(this.overlayRef!);\n this.updateOverlayStyle();\n this.updateBodyOverflow();\n this.savePreviouslyFocusedElement();\n this.trapFocus();\n this.changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.inAnimation = false;\n this.changeDetectorRef.detectChanges();\n this.nzAfterOpen.next();\n }, this.getAnimationDuration());\n }\n\n getContentComponent(): T | null {\n return this.componentInstance;\n }\n\n override getContentComponentRef(): ComponentRef<T> | null {\n return this.componentRef;\n }\n\n closeClick(): void {\n this.nzOnClose.emit();\n }\n\n maskClick(): void {\n if (this.nzMaskClosable && this.nzMask) {\n this.nzOnClose.emit();\n }\n }\n\n private attachBodyContent(): void {\n this.bodyPortalOutlet!.dispose();\n\n if (this.nzContent instanceof Type) {\n const childInjector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: NzDrawerRef, useValue: this },\n { provide: NZ_DRAWER_DATA, useValue: this.nzData }\n ]\n });\n const componentPortal = new ComponentPortal<T>(this.nzContent, null, childInjector);\n this.componentRef = this.bodyPortalOutlet!.attachComponentPortal(componentPortal);\n\n this.componentInstance = this.componentRef.instance;\n /**TODO\n * When nzContentParam will be remove in the next major version, we have to remove the following line\n * **/\n Object.assign(this.componentRef.instance!, this.nzData || this.nzContentParams);\n this.componentRef.changeDetectorRef.detectChanges();\n }\n }\n\n private attachOverlay(): void {\n if (!this.overlayRef) {\n this.portal = new TemplatePortal(this.drawerTemplate, this.viewContainerRef);\n this.overlayRef = this.overlay.create(this.getOverlayConfig());\n\n overlayZIndexSetter(this.overlayRef, this.nzZIndex);\n }\n\n if (this.overlayRef && !this.overlayRef.hasAttached()) {\n this.overlayRef.attach(this.portal);\n this.overlayRef!.keydownEvents()\n .pipe(takeUntil(this.destroy$))\n .subscribe((event: KeyboardEvent) => {\n if (event.keyCode === ESCAPE && this.isOpen && this.nzKeyboard) {\n this.nzOnClose.emit();\n }\n });\n this.overlayRef\n .detachments()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.close();\n this.disposeOverlay();\n });\n }\n }\n\n private disposeOverlay(): void {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n private getOverlayConfig(): OverlayConfig {\n return new OverlayConfig({\n disposeOnNavigation: this.nzCloseOnNavigation,\n positionStrategy: this.overlay.position().global(),\n scrollStrategy: this.overlay.scrollStrategies.block()\n });\n }\n\n private updateOverlayStyle(): void {\n if (this.overlayRef && this.overlayRef.overlayElement) {\n this.renderer.setStyle(this.overlayRef.overlayElement, 'pointer-events', this.isOpen ? 'auto' : 'none');\n }\n }\n\n private updateBodyOverflow(): void {\n if (this.overlayRef) {\n if (this.isOpen) {\n this.overlayRef.getConfig().scrollStrategy!.enable();\n } else {\n this.overlayRef.getConfig().scrollStrategy!.disable();\n }\n }\n }\n\n savePreviouslyFocusedElement(): void {\n if (this.document && !this.previouslyFocusedElement) {\n this.previouslyFocusedElement = this.document.activeElement as HTMLElement;\n // We need the extra check, because IE's svg element has no blur method.\n if (this.previouslyFocusedElement && typeof this.previouslyFocusedElement.blur === 'function') {\n this.previouslyFocusedElement.blur();\n }\n }\n }\n\n private trapFocus(): void {\n if (!this.focusTrap && this.overlayRef && this.overlayRef.overlayElement) {\n this.focusTrap = this.focusTrapFactory.create(this.overlayRef!.overlayElement);\n this.focusTrap.focusInitialElement();\n }\n }\n\n private restoreFocus(): void {\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this.previouslyFocusedElement && typeof this.previouslyFocusedElement.focus === 'function') {\n this.previouslyFocusedElement.focus();\n this.previouslyFocusedElement = undefined;\n }\n if (this.focusTrap) {\n this.focusTrap.destroy();\n }\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { NzSafeAny } from 'ng-zorro-antd/core/types';\n\nimport { NzDrawerOptions, NzDrawerOptionsOfComponent } from './drawer-options';\nimport { NzDrawerRef } from './drawer-ref';\nimport { NzDrawerComponent } from './drawer.component';\n\nexport class DrawerBuilderForService<T extends {}, R> {\n private drawerRef: NzDrawerComponent<T, R> | null;\n private overlayRef: OverlayRef;\n private unsubscribe$ = new Subject<void>();\n\n constructor(\n private overlay: Overlay,\n private options: NzDrawerOptions\n ) {\n /** pick {@link NzDrawerOptions.nzOnCancel} and omit this option */\n const { nzOnCancel, ...componentOption } = this.options;\n this.overlayRef = this.overlay.create();\n this.drawerRef = this.overlayRef.attach(new ComponentPortal(NzDrawerComponent)).instance;\n this.updateOptions(componentOption);\n // Prevent repeatedly open drawer when tap focus element.\n this.drawerRef.savePreviouslyFocusedElement();\n this.drawerRef.nzOnViewInit.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.drawerRef!.open();\n });\n this.drawerRef.nzOnClose.subscribe(() => {\n if (nzOnCancel) {\n nzOnCancel().then(canClose => {\n if (canClose !== false) {\n this.drawerRef!.close();\n }\n });\n } else {\n this.drawerRef!.close();\n }\n });\n\n this.drawerRef.afterClose.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.overlayRef.dispose();\n this.drawerRef = null;\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n });\n }\n\n getInstance(): NzDrawerRef<T, R> {\n return this.drawerRef!;\n }\n\n updateOptions(options: NzDrawerOptionsOfComponent): void {\n Object.assign(this.drawerRef!, options);\n }\n}\n\n@Injectable()\nexport class NzDrawerService {\n constructor(private overlay: Overlay) {}\n\n create<T extends {} = NzSafeAny, D = undefined, R = NzSafeAny>(\n options: NzDrawerOptions<T, D extends undefined ? {} : D>\n ): NzDrawerRef<T, R> {\n return new DrawerBuilderForService<T, R>(this.overlay, options).getInstance();\n }\n}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { NzDrawerContentDirective } from './drawer-content.directive';\nimport { NzDrawerComponent } from './drawer.component';\nimport { NzDrawerService } from './drawer.service';\n\n@NgModule({\n imports: [NzDrawerComponent, NzDrawerContentDirective],\n providers: [NzDrawerService],\n exports: [NzDrawerComponent, NzDrawerContentDirective]\n})\nexport class NzDrawerModule {}\n","/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\nexport * from './drawer-content.directive';\nexport * from './drawer-options';\nexport * from './drawer-ref';\nexport * from './drawer.component';\nexport * from './drawer.module';\nexport * from './drawer.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}