@@ -15,11 +15,12 @@ import {
1515 ViewEncapsulation
1616} from '@angular/core' ;
1717import { Observable } from 'rxjs/Observable' ;
18- import { Observer } from 'rxjs/Observer' ;
1918import { Subject } from 'rxjs/Subject' ;
2019import { Subscription } from 'rxjs/Subscription' ;
21- import { merge } from 'rxjs/observable/merge ' ;
20+ import { fromEvent } from 'rxjs/observable/fromEvent ' ;
2221import { debounceTime } from 'rxjs/operators/debounceTime' ;
22+ import { mapTo } from 'rxjs/operators/mapTo' ;
23+ import { merge } from 'rxjs/operators/merge' ;
2324import { dropDownAnimation } from '../core/animation/dropdown-animations' ;
2425import { DEFAULT_DROPDOWN_POSITIONS , POSITION_MAP } from '../core/overlay/overlay-position-map' ;
2526import { NzMenuComponent } from '../menu/nz-menu.component' ;
@@ -173,7 +174,7 @@ export class NzDropDownComponent implements OnInit, OnDestroy, AfterViewInit {
173174 }
174175
175176 _startSubscribe ( observable$ : Observable < boolean > ) : void {
176- this . _subscription = observable$ . pipe ( debounceTime ( 300 ) )
177+ this . _subscription = observable$ . pipe ( debounceTime ( 50 ) )
177178 . subscribe ( this . _onVisibleChange ) ;
178179 }
179180
@@ -192,32 +193,17 @@ export class NzDropDownComponent implements OnInit, OnDestroy, AfterViewInit {
192193 ngAfterViewInit ( ) : void {
193194 let mouse$ : Observable < boolean > ;
194195 if ( this . nzTrigger === 'hover' ) {
195- mouse$ = Observable . create ( ( observer : Observer < boolean > ) => {
196- const disposeMouseEnter = this . _renderer . listen ( this . _nzOrigin . elementRef . nativeElement , 'mouseenter' , ( ) => {
197- observer . next ( true ) ;
198- } ) ;
199- const disposeMouseLeave = this . _renderer . listen ( this . _nzOrigin . elementRef . nativeElement , 'mouseleave' , ( ) => {
200- observer . next ( false ) ;
201- } ) ;
202- return ( ) => {
203- disposeMouseEnter ( ) ;
204- disposeMouseLeave ( ) ;
205- } ;
206- } ) ;
196+ const mouseEnterOrigin$ = fromEvent ( this . _nzOrigin . elementRef . nativeElement , 'mouseenter' ) . pipe ( mapTo ( true ) ) ;
197+ const mouseLeaveOrigin$ = fromEvent ( this . _nzOrigin . elementRef . nativeElement , 'mouseleave' ) . pipe ( mapTo ( false ) ) ;
198+ mouse$ = mouseEnterOrigin$ . pipe ( merge ( mouseLeaveOrigin$ ) ) ;
207199 }
208200 if ( this . nzTrigger === 'click' ) {
209- mouse$ = Observable . create ( ( observer : Observer < boolean > ) => {
210- const dispose = this . _renderer . listen ( this . _nzOrigin . elementRef . nativeElement , 'click' , ( e ) => {
211- e . preventDefault ( ) ;
212- observer . next ( true ) ;
213- } ) ;
214- return ( ) => dispose ( ) ;
201+ mouse$ = fromEvent ( this . _nzOrigin . elementRef . nativeElement , 'click' ) . pipe ( mapTo ( true ) ) ;
202+ this . _renderer . listen ( this . _nzOrigin . elementRef . nativeElement , 'click' , ( e ) => {
203+ e . preventDefault ( ) ;
215204 } ) ;
216205 }
217- const observable$ = merge (
218- mouse$ ,
219- this . _visibleChange
220- ) ;
206+ const observable$ = mouse$ . pipe ( merge ( this . _visibleChange ) ) ;
221207 this . _startSubscribe ( observable$ ) ;
222208 }
223209
0 commit comments