UNPKG

ng-zorro-antd

Version:

An enterprise-class UI components based on Ant Design and Angular

1 lines 32.5 kB
{"version":3,"file":"ng-zorro-antd-dropdown.mjs","sources":["../../components/dropdown/dropdown.directive.ts","../../components/dropdown/context-menu.service.module.ts","../../components/dropdown/dropdown-a.directive.ts","../../components/dropdown/dropdown-button.directive.ts","../../components/dropdown/dropdown-menu.component.ts","../../components/dropdown/dropdown.module.ts","../../components/dropdown/context-menu.service.ts","../../components/dropdown/public-api.ts","../../components/dropdown/ng-zorro-antd-dropdown.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 { ESCAPE, hasModifierKey } from '@angular/cdk/keycodes';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { Platform } from '@angular/cdk/platform';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n Renderer2,\n SimpleChanges,\n ViewContainerRef\n} from '@angular/core';\nimport { BehaviorSubject, combineLatest, EMPTY, fromEvent, merge, Subject } from 'rxjs';\nimport { auditTime, distinctUntilChanged, filter, map, mapTo, switchMap, takeUntil } from 'rxjs/operators';\n\nimport { NzConfigKey, NzConfigService, WithConfig } from 'ng-zorro-antd/core/config';\nimport { POSITION_MAP } from 'ng-zorro-antd/core/overlay';\nimport { BooleanInput, IndexableObject } from 'ng-zorro-antd/core/types';\nimport { InputBoolean } from 'ng-zorro-antd/core/util';\n\nimport { NzDropdownMenuComponent, NzPlacementType } from './dropdown-menu.component';\n\nconst NZ_CONFIG_MODULE_NAME: NzConfigKey = 'dropDown';\n\nconst listOfPositions = [\n POSITION_MAP.bottomLeft,\n POSITION_MAP.bottomRight,\n POSITION_MAP.topRight,\n POSITION_MAP.topLeft\n];\n\n@Directive({\n selector: '[nz-dropdown]',\n exportAs: 'nzDropdown',\n host: {\n class: 'ant-dropdown-trigger'\n }\n})\nexport class NzDropDownDirective implements AfterViewInit, OnDestroy, OnChanges {\n readonly _nzModuleName: NzConfigKey = NZ_CONFIG_MODULE_NAME;\n\n static ngAcceptInputType_nzBackdrop: BooleanInput;\n static ngAcceptInputType_nzClickHide: BooleanInput;\n static ngAcceptInputType_nzDisabled: BooleanInput;\n static ngAcceptInputType_nzVisible: BooleanInput;\n\n private portal?: TemplatePortal;\n private overlayRef: OverlayRef | null = null;\n private destroy$ = new Subject();\n private positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef.nativeElement)\n .withLockedPosition()\n .withTransformOriginOn('.ant-dropdown');\n private inputVisible$ = new BehaviorSubject<boolean>(false);\n private nzTrigger$ = new BehaviorSubject<'click' | 'hover'>('hover');\n private overlayClose$ = new Subject<boolean>();\n @Input() nzDropdownMenu: NzDropdownMenuComponent | null = null;\n @Input() nzTrigger: 'click' | 'hover' = 'hover';\n @Input() nzMatchWidthElement: ElementRef | null = null;\n @Input() @WithConfig<boolean>() @InputBoolean() nzBackdrop = false;\n @Input() @InputBoolean() nzClickHide = true;\n @Input() @InputBoolean() nzDisabled = false;\n @Input() @InputBoolean() nzVisible = false;\n @Input() nzOverlayClassName: string = '';\n @Input() nzOverlayStyle: IndexableObject = {};\n @Input() nzPlacement: NzPlacementType = 'bottomLeft';\n @Output() readonly nzVisibleChange: EventEmitter<boolean> = new EventEmitter();\n\n setDropdownMenuValue<T extends keyof NzDropdownMenuComponent>(key: T, value: NzDropdownMenuComponent[T]): void {\n if (this.nzDropdownMenu) {\n this.nzDropdownMenu.setValue(key, value);\n }\n }\n\n constructor(\n public readonly nzConfigService: NzConfigService,\n public elementRef: ElementRef,\n private overlay: Overlay,\n private renderer: Renderer2,\n private viewContainerRef: ViewContainerRef,\n private platform: Platform\n ) {}\n\n ngAfterViewInit(): void {\n if (this.nzDropdownMenu) {\n const nativeElement: HTMLElement = this.elementRef.nativeElement;\n /** host mouse state **/\n const hostMouseState$ = merge(\n fromEvent(nativeElement, 'mouseenter').pipe(mapTo(true)),\n fromEvent(nativeElement, 'mouseleave').pipe(mapTo(false))\n );\n /** menu mouse state **/\n const menuMouseState$ = this.nzDropdownMenu.mouseState$;\n /** merged mouse state **/\n const mergedMouseState$ = merge(menuMouseState$, hostMouseState$);\n /** host click state **/\n const hostClickState$ = fromEvent(nativeElement, 'click').pipe(map(() => !this.nzVisible));\n /** visible state switch by nzTrigger **/\n const visibleStateByTrigger$ = this.nzTrigger$.pipe(\n switchMap(trigger => {\n if (trigger === 'hover') {\n return mergedMouseState$;\n } else if (trigger === 'click') {\n return hostClickState$;\n } else {\n return EMPTY;\n }\n })\n );\n const descendantMenuItemClick$ = this.nzDropdownMenu.descendantMenuItemClick$.pipe(\n filter(() => this.nzClickHide),\n mapTo(false)\n );\n const domTriggerVisible$ = merge(visibleStateByTrigger$, descendantMenuItemClick$, this.overlayClose$).pipe(\n filter(() => !this.nzDisabled)\n );\n const visible$ = merge(this.inputVisible$, domTriggerVisible$);\n combineLatest([visible$, this.nzDropdownMenu.isChildSubMenuOpen$])\n .pipe(\n map(([visible, sub]) => visible || sub),\n auditTime(150),\n distinctUntilChanged(),\n filter(() => this.platform.isBrowser),\n takeUntil(this.destroy$)\n )\n .subscribe((visible: boolean) => {\n const element = this.nzMatchWidthElement ? this.nzMatchWidthElement.nativeElement : nativeElement;\n const triggerWidth = element.getBoundingClientRect().width;\n if (this.nzVisible !== visible) {\n this.nzVisibleChange.emit(visible);\n }\n this.nzVisible = visible;\n if (visible) {\n /** set up overlayRef **/\n if (!this.overlayRef) {\n /** new overlay **/\n this.overlayRef = this.overlay.create({\n positionStrategy: this.positionStrategy,\n minWidth: triggerWidth,\n disposeOnNavigation: true,\n hasBackdrop: this.nzBackdrop && this.nzTrigger === 'click',\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n merge(\n this.overlayRef.backdropClick(),\n this.overlayRef.detachments(),\n this.overlayRef\n .outsidePointerEvents()\n .pipe(filter((e: MouseEvent) => !this.elementRef.nativeElement.contains(e.target))),\n this.overlayRef.keydownEvents().pipe(filter(e => e.keyCode === ESCAPE && !hasModifierKey(e)))\n )\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.overlayClose$.next(false);\n });\n } else {\n /** update overlay config **/\n const overlayConfig = this.overlayRef.getConfig();\n overlayConfig.minWidth = triggerWidth;\n }\n /** open dropdown with animation **/\n this.positionStrategy.withPositions([POSITION_MAP[this.nzPlacement], ...listOfPositions]);\n /** reset portal if needed **/\n if (!this.portal || this.portal.templateRef !== this.nzDropdownMenu!.templateRef) {\n this.portal = new TemplatePortal(this.nzDropdownMenu!.templateRef, this.viewContainerRef);\n }\n this.overlayRef.attach(this.portal);\n } else {\n /** detach overlayRef if needed **/\n if (this.overlayRef) {\n this.overlayRef.detach();\n }\n }\n });\n\n this.nzDropdownMenu!.animationStateChange$.pipe(takeUntil(this.destroy$)).subscribe(event => {\n if (event.toState === 'void') {\n if (this.overlayRef) {\n this.overlayRef.dispose();\n }\n this.overlayRef = null;\n }\n });\n }\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n if (this.overlayRef) {\n this.overlayRef.dispose();\n this.overlayRef = null;\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const { nzVisible, nzDisabled, nzOverlayClassName, nzOverlayStyle, nzTrigger } = changes;\n if (nzTrigger) {\n this.nzTrigger$.next(this.nzTrigger);\n }\n if (nzVisible) {\n this.inputVisible$.next(this.nzVisible);\n }\n if (nzDisabled) {\n const nativeElement = this.elementRef.nativeElement;\n if (this.nzDisabled) {\n this.renderer.setAttribute(nativeElement, 'disabled', '');\n this.inputVisible$.next(false);\n } else {\n this.renderer.removeAttribute(nativeElement, 'disabled');\n }\n }\n if (nzOverlayClassName) {\n this.setDropdownMenuValue('nzOverlayClassName', this.nzOverlayClassName);\n }\n if (nzOverlayStyle) {\n this.setDropdownMenuValue('nzOverlayStyle', this.nzOverlayStyle);\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 { NgModule } from '@angular/core';\n\n@NgModule()\nexport class NzContextMenuServiceModule {}\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 { Directive } from '@angular/core';\n\n@Directive({\n selector: 'a[nz-dropdown]',\n host: {\n class: 'ant-dropdown-link'\n }\n})\nexport class NzDropDownADirective {\n constructor() {}\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 { AfterViewInit, Directive, ElementRef, Host, Optional, Renderer2 } from '@angular/core';\n\nimport { NzButtonGroupComponent } from 'ng-zorro-antd/button';\n\n@Directive({\n selector: '[nz-button][nz-dropdown]'\n})\nexport class NzDropdownButtonDirective implements AfterViewInit {\n constructor(\n private renderer: Renderer2,\n @Host() @Optional() private nzButtonGroupComponent: NzButtonGroupComponent,\n private elementRef: ElementRef\n ) {}\n ngAfterViewInit(): void {\n const parentElement = this.renderer.parentNode(this.elementRef.nativeElement);\n if (this.nzButtonGroupComponent && parentElement) {\n this.renderer.addClass(parentElement, 'ant-dropdown-button');\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 { AnimationEvent } from '@angular/animations';\nimport { Direction, Directionality } from '@angular/cdk/bidi';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Host,\n OnDestroy,\n OnInit,\n Optional,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { BehaviorSubject, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { slideMotion } from 'ng-zorro-antd/core/animation';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport { IndexableObject, NzSafeAny } from 'ng-zorro-antd/core/types';\nimport { MenuService, NzIsMenuInsideDropDownToken } from 'ng-zorro-antd/menu';\n\nexport type NzPlacementType = 'bottomLeft' | 'bottomCenter' | 'bottomRight' | 'topLeft' | 'topCenter' | 'topRight';\n\n@Component({\n selector: `nz-dropdown-menu`,\n exportAs: `nzDropdownMenu`,\n animations: [slideMotion],\n providers: [\n MenuService,\n /** menu is inside dropdown-menu component **/\n {\n provide: NzIsMenuInsideDropDownToken,\n useValue: true\n }\n ],\n template: `\n <ng-template>\n <div\n class=\"ant-dropdown\"\n [class.ant-dropdown-rtl]=\"dir === 'rtl'\"\n [ngClass]=\"nzOverlayClassName\"\n [ngStyle]=\"nzOverlayStyle\"\n @slideMotion\n (@slideMotion.done)=\"onAnimationEvent($event)\"\n [@.disabled]=\"noAnimation?.nzNoAnimation\"\n [nzNoAnimation]=\"noAnimation?.nzNoAnimation\"\n (mouseenter)=\"setMouseState(true)\"\n (mouseleave)=\"setMouseState(false)\"\n >\n <ng-content></ng-content>\n </div>\n </ng-template>\n `,\n preserveWhitespaces: false,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class NzDropdownMenuComponent implements AfterContentInit, OnDestroy, OnInit {\n mouseState$ = new BehaviorSubject<boolean>(false);\n isChildSubMenuOpen$ = this.nzMenuService.isChildSubMenuOpen$;\n descendantMenuItemClick$ = this.nzMenuService.descendantMenuItemClick$;\n animationStateChange$ = new EventEmitter<AnimationEvent>();\n nzOverlayClassName: string = '';\n nzOverlayStyle: IndexableObject = {};\n @ViewChild(TemplateRef, { static: true }) templateRef!: TemplateRef<NzSafeAny>;\n\n dir: Direction = 'ltr';\n private destroy$ = new Subject<void>();\n\n onAnimationEvent(event: AnimationEvent): void {\n this.animationStateChange$.emit(event);\n }\n\n setMouseState(visible: boolean): void {\n this.mouseState$.next(visible);\n }\n\n setValue<T extends keyof NzDropdownMenuComponent>(key: T, value: this[T]): void {\n this[key] = value;\n this.cdr.markForCheck();\n }\n\n constructor(\n private cdr: ChangeDetectorRef,\n private elementRef: ElementRef,\n private renderer: Renderer2,\n public viewContainerRef: ViewContainerRef,\n public nzMenuService: MenuService,\n @Optional() private directionality: Directionality,\n @Host() @Optional() public noAnimation?: NzNoAnimationDirective\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\n this.dir = this.directionality.value;\n }\n\n ngAfterContentInit(): void {\n this.renderer.removeChild(this.renderer.parentNode(this.elementRef.nativeElement), this.elementRef.nativeElement);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\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 { BidiModule } from '@angular/cdk/bidi';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { NzButtonModule } from 'ng-zorro-antd/button';\nimport { NzNoAnimationModule } from 'ng-zorro-antd/core/no-animation';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { NzOverlayModule } from 'ng-zorro-antd/core/overlay';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { NzMenuModule } from 'ng-zorro-antd/menu';\n\nimport { NzContextMenuServiceModule } from './context-menu.service.module';\nimport { NzDropDownADirective } from './dropdown-a.directive';\nimport { NzDropdownButtonDirective } from './dropdown-button.directive';\nimport { NzDropdownMenuComponent } from './dropdown-menu.component';\nimport { NzDropDownDirective } from './dropdown.directive';\n\n@NgModule({\n imports: [\n BidiModule,\n CommonModule,\n OverlayModule,\n FormsModule,\n NzButtonModule,\n NzMenuModule,\n NzIconModule,\n NzNoAnimationModule,\n PlatformModule,\n NzOverlayModule,\n NzContextMenuServiceModule,\n NzOutletModule\n ],\n entryComponents: [NzDropdownMenuComponent],\n declarations: [NzDropDownDirective, NzDropDownADirective, NzDropdownMenuComponent, NzDropdownButtonDirective],\n exports: [NzMenuModule, NzDropDownDirective, NzDropDownADirective, NzDropdownMenuComponent, NzDropdownButtonDirective]\n})\nexport class NzDropDownModule {}\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 { ConnectionPositionPair, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { Injectable, NgZone } from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { NzContextMenuServiceModule } from './context-menu.service.module';\nimport { NzDropdownMenuComponent } from './dropdown-menu.component';\n\nconst listOfPositions = [\n new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'top' }),\n new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }),\n new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'end', overlayY: 'bottom' }),\n new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'end', overlayY: 'top' })\n];\n\n@Injectable({\n providedIn: NzContextMenuServiceModule\n})\nexport class NzContextMenuService {\n private overlayRef: OverlayRef | null = null;\n private closeSubscription = Subscription.EMPTY;\n\n constructor(private ngZone: NgZone, private overlay: Overlay) {}\n\n create($event: MouseEvent | { x: number; y: number }, nzDropdownMenuComponent: NzDropdownMenuComponent): void {\n this.close(true);\n const { x, y } = $event;\n if ($event instanceof MouseEvent) {\n $event.preventDefault();\n }\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo({ x, y })\n .withPositions(listOfPositions)\n .withTransformOriginOn('.ant-dropdown');\n this.overlayRef = this.overlay.create({\n positionStrategy,\n disposeOnNavigation: true,\n scrollStrategy: this.overlay.scrollStrategies.close()\n });\n\n this.closeSubscription = new Subscription();\n\n this.closeSubscription.add(nzDropdownMenuComponent.descendantMenuItemClick$.subscribe(() => this.close()));\n\n this.closeSubscription.add(\n this.ngZone.runOutsideAngular(() =>\n fromEvent<MouseEvent>(document, 'click')\n .pipe(\n filter(event => !!this.overlayRef && !this.overlayRef.overlayElement.contains(event.target as HTMLElement)),\n /** handle firefox contextmenu event **/\n filter(event => event.button !== 2),\n take(1)\n )\n .subscribe(() => this.ngZone.run(() => this.close()))\n )\n );\n\n this.overlayRef.attach(\n new TemplatePortal(nzDropdownMenuComponent.templateRef, nzDropdownMenuComponent.viewContainerRef)\n );\n }\n\n close(clear: boolean = false): void {\n if (this.overlayRef) {\n this.overlayRef.detach();\n if (clear) {\n this.overlayRef.dispose();\n }\n this.overlayRef = null;\n this.closeSubscription.unsubscribe();\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\nexport * from './dropdown.directive';\nexport * from './dropdown.module';\nexport * from './dropdown-a.directive';\nexport * from './dropdown-button.directive';\nexport * from './dropdown-menu.component';\nexport * from './context-menu.service';\nexport * from './context-menu.service.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["listOfPositions"],"mappings":"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"}