Skip to content

Commit 3293c2b

Browse files
authored
feat: allow only drag/resize with primary (left) button (#132)
Only left-click or touch can drag/resize, to avoid macOS right-click pointerUp inconsistency.
1 parent 1b2c57e commit 3293c2b

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

projects/angular-grid-layout/src/lib/utils/pointer.utils.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ function ktdMouserOrTouchEnd(element: HTMLElement, touchNumber = 1): Observable<
125125

126126

127127
/**
128-
* Emits when a 'pointerdown' event occurs (only for the primary pointer). Fallbacks to 'mousemove' or a 'touchmove' if pointer events are not supported.
128+
* Emits when a 'pointerdown' event occurs (only for the primary pointer and mousePrimaryButton/touch). Fallbacks to 'mousemove' or a 'touchmove' if pointer events are not supported.
129129
* @param element, html element where to listen the events.
130130
*/
131131
export function ktdPointerDown(element): Observable<MouseEvent | TouchEvent | PointerEvent> {
@@ -134,30 +134,30 @@ export function ktdPointerDown(element): Observable<MouseEvent | TouchEvent | Po
134134
}
135135

136136
return fromEvent<PointerEvent>(element, 'pointerdown', activeEventListenerOptions as AddEventListenerOptions).pipe(
137-
filter((pointerEvent) => pointerEvent.isPrimary)
137+
filter((pointerEvent) => pointerEvent.isPrimary && pointerEvent.button === 0)
138138
)
139139
}
140140

141141
/**
142-
* Emits when a 'pointermove' event occurs (only for the primary pointer). Fallbacks to 'mousemove' or a 'touchmove' if pointer events are not supported.
142+
* Emits when a 'pointermove' event occurs (only for the primary pointer and mousePrimaryButton/touch). Fallbacks to 'mousemove' or a 'touchmove' if pointer events are not supported.
143143
* @param element, html element where to listen the events.
144144
*/
145145
export function ktdPointerMove(element): Observable<MouseEvent | TouchEvent | PointerEvent> {
146146
if (!ktdSupportsPointerEvents()) {
147147
return ktdMouseOrTouchMove(element);
148148
}
149149
return fromEvent<PointerEvent>(element, 'pointermove', activeEventListenerOptions as AddEventListenerOptions).pipe(
150-
filter((pointerEvent) => pointerEvent.isPrimary),
150+
filter((pointerEvent) => pointerEvent.isPrimary && pointerEvent.button === 0),
151151
);
152152
}
153153

154154
/**
155-
* Emits when a 'pointerup' event occurs (only for the primary pointer). Fallbacks to 'mousemove' or a 'touchmove' if pointer events are not supported.
155+
* Emits when a 'pointerup' event occurs (only for the primary pointer and mousePrimaryButton/touch). Fallbacks to 'mousemove' or a 'touchmove' if pointer events are not supported.
156156
* @param element, html element where to listen the events.
157157
*/
158158
export function ktdPointerUp(element): Observable<MouseEvent | TouchEvent | PointerEvent> {
159159
if (!ktdSupportsPointerEvents()) {
160160
return ktdMouserOrTouchEnd(element);
161161
}
162-
return fromEvent<PointerEvent>(element, 'pointerup').pipe(filter(pointerEvent => pointerEvent.isPrimary));
162+
return fromEvent<PointerEvent>(element, 'pointerup').pipe(filter(pointerEvent => pointerEvent.isPrimary && pointerEvent.button === 0));
163163
}

0 commit comments

Comments
 (0)