File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -107,6 +107,7 @@ export default class Marker extends Evented<MarkerEvents> {
107107 _updateMoving : ( ) => void ;
108108 _occludedOpacity : number ;
109109 _altitude : number ;
110+ _pointerEvents ?: string ;
110111 _svgElement : Element ;
111112 _shadowElement : Element ;
112113
@@ -154,6 +155,7 @@ export default class Marker extends Evented<MarkerEvents> {
154155
155156 this . _state = 'inactive' ;
156157 this . _isDragging = false ;
158+ this . _pointerEvents = null ;
157159 this . _updateMoving = ( ) => this . _update ( true ) ;
158160
159161 if ( ! options || ! options . element ) {
@@ -554,7 +556,12 @@ export default class Marker extends Evented<MarkerEvents> {
554556 }
555557
556558 this . _element . style . opacity = `${ opacity } ` ;
557- this . _element . style . pointerEvents = opacity > 0 ? 'auto' : 'none' ;
559+ const currentPointerEvents = this . _element . style . pointerEvents ;
560+ const isUnmanaged = this . _pointerEvents === null ? currentPointerEvents === '' : currentPointerEvents === this . _pointerEvents ;
561+ if ( isUnmanaged ) {
562+ this . _pointerEvents = opacity > 0 ? 'auto' : 'none' ;
563+ this . _element . style . pointerEvents = this . _pointerEvents ;
564+ }
558565 if ( this . _popup ) {
559566 this . _popup . _setOpacity ( opacity ) ;
560567 }
Original file line number Diff line number Diff line change @@ -1349,6 +1349,26 @@ describe('Globe', () => {
13491349 } ) ;
13501350 } ) ;
13511351
1352+ test ( 'does not override a user-set pointerEvents on a visible marker (#13701)' , async ( ) => {
1353+ const map = createMap ( ) ;
1354+ const marker = new Marker ( )
1355+ . setLngLat ( [ 82 , 0 ] )
1356+ . addTo ( map ) ;
1357+ map . _domRenderTaskQueue . run ( ) ;
1358+
1359+ marker . getElement ( ) . style . pointerEvents = 'none' ;
1360+ map . setProjection ( 'globe' ) ;
1361+
1362+ await new Promise ( resolve => {
1363+ map . once ( 'render' , ( ) => {
1364+ expect ( marker . getElement ( ) . style . opacity ) . toBe ( '1' ) ;
1365+ expect ( marker . getElement ( ) . style . pointerEvents ) . toBe ( 'none' ) ;
1366+ map . remove ( ) ;
1367+ resolve ( ) ;
1368+ } ) ;
1369+ } ) ;
1370+ } ) ;
1371+
13521372 // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
13531373 function transform ( marker ) { return marker . getElement ( ) . style . transform ; }
13541374
You can’t perform that action at this time.
0 commit comments