Skip to content

Commit ca189c3

Browse files
committed
fix: always use native click event rather than hammerjs's tap event
Closes #1113
1 parent 427e5bd commit ca189c3

File tree

7 files changed

+8
-116
lines changed

7 files changed

+8
-116
lines changed

package-lock.json

-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@
105105
"del-cli": "^2.0.0",
106106
"flatpickr": "^4.6.2",
107107
"font-awesome": "^4.7.0",
108-
"hammerjs": "^2.0.8",
109108
"highlightjs-loader": "^0.2.3",
110109
"husky": "^3.0.4",
111110
"karma": "^4.2.0",

projects/angular-calendar/src/modules/common/click.directive.ts

+7-41
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,7 @@ import {
1212
} from '@angular/core';
1313
import { DOCUMENT } from '@angular/common';
1414
import { Observable, Subject } from 'rxjs';
15-
import { requestIdleCallbackObservable } from './request-idle-callback';
16-
import { switchMapTo, takeUntil } from 'rxjs/operators';
17-
18-
const clickElements = new Set<HTMLElement>();
19-
20-
const eventName: string =
21-
typeof window !== 'undefined' && typeof window['Hammer'] !== 'undefined'
22-
? 'tap'
23-
: 'click';
15+
import { takeUntil } from 'rxjs/operators';
2416

2517
@Directive({
2618
selector: '[mwlClick]'
@@ -35,53 +27,27 @@ export class ClickDirective implements OnInit, OnDestroy {
3527
constructor(
3628
private renderer: Renderer2,
3729
private elm: ElementRef<HTMLElement>,
38-
@Inject(DOCUMENT) private document,
39-
private zone: NgZone
30+
@Inject(DOCUMENT) private document
4031
) {}
4132

4233
ngOnInit(): void {
4334
if (!this.clickListenerDisabled) {
44-
this.renderer.setAttribute(
45-
this.elm.nativeElement,
46-
'data-calendar-clickable',
47-
'true'
48-
);
49-
clickElements.add(this.elm.nativeElement);
50-
51-
// issue #942 - lazily initialise all click handlers after initial render as hammerjs is slow
52-
requestIdleCallbackObservable()
53-
.pipe(
54-
switchMapTo(this.listen()),
55-
takeUntil(this.destroy$)
56-
)
35+
this.listen()
36+
.pipe(takeUntil(this.destroy$))
5737
.subscribe(event => {
58-
// prevent child click events from firing on parent elements that also have click events
59-
let nearestClickableParent = event.target as HTMLElement;
60-
while (
61-
!clickElements.has(nearestClickableParent) &&
62-
nearestClickableParent !== this.document.body
63-
) {
64-
nearestClickableParent = nearestClickableParent.parentElement;
65-
}
66-
const isThisClickableElement =
67-
this.elm.nativeElement === nearestClickableParent;
68-
if (isThisClickableElement) {
69-
this.zone.run(() => {
70-
this.click.next(event);
71-
});
72-
}
38+
event.stopPropagation();
39+
this.click.emit(event);
7340
});
7441
}
7542
}
7643

7744
ngOnDestroy(): void {
7845
this.destroy$.next();
79-
clickElements.delete(this.elm.nativeElement);
8046
}
8147

8248
private listen() {
8349
return new Observable<MouseEvent>(observer => {
84-
return this.renderer.listen(this.elm.nativeElement, eventName, event => {
50+
return this.renderer.listen(this.elm.nativeElement, 'click', event => {
8551
observer.next(event);
8652
});
8753
});

projects/angular-calendar/src/modules/common/request-idle-callback.ts

-28
This file was deleted.

projects/demos/app/demo-app.module.ts

+1-11
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import { NgModule } from '@angular/core';
22
import { RouterModule } from '@angular/router';
3-
import {
4-
BrowserModule,
5-
HAMMER_GESTURE_CONFIG
6-
} from '@angular/platform-browser';
3+
import { BrowserModule } from '@angular/platform-browser';
74
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
85
import {
96
NgbTabsetModule,
@@ -17,7 +14,6 @@ import { DemoAppComponent } from './demo-app.component';
1714
import { DemoComponent as DefaultDemoComponent } from './demo-modules/kitchen-sink/component';
1815
import { DemoModule as DefaultDemoModule } from './demo-modules/kitchen-sink/module';
1916
import { environment } from '../environments/environment';
20-
import { CustomHammerConfig } from './hammer-config';
2117
import { FormsModule } from '@angular/forms';
2218
import { ClipboardModule } from 'ngx-clipboard';
2319

@@ -424,12 +420,6 @@ import { ClipboardModule } from 'ngx-clipboard';
424420
}
425421
)
426422
],
427-
providers: [
428-
{
429-
provide: HAMMER_GESTURE_CONFIG,
430-
useClass: CustomHammerConfig
431-
}
432-
],
433423
bootstrap: [DemoAppComponent]
434424
})
435425
export class DemoAppModule {}

projects/demos/app/hammer-config.ts

-28
This file was deleted.

projects/demos/polyfills.ts

-1
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,4 @@
1919
*/
2020

2121
import 'core-js/modules/es.object.entries';
22-
import 'hammerjs';
2322
import 'zone.js/dist/zone';

0 commit comments

Comments
 (0)