Added flag to enable tap clicks for SVG in tested circumstances.
This commit is contained in:
parent
f68d8b53a3
commit
d0c89a78c2
27
dist/iwmlib.js
vendored
27
dist/iwmlib.js
vendored
@ -5164,6 +5164,7 @@
|
|||||||
height = null, // required
|
height = null, // required
|
||||||
resizable = false,
|
resizable = false,
|
||||||
clickOnTap = false,
|
clickOnTap = false,
|
||||||
|
triggerSVGClicks = false,
|
||||||
allowClickDistance = 44,
|
allowClickDistance = 44,
|
||||||
verbose = true,
|
verbose = true,
|
||||||
onResize = null,
|
onResize = null,
|
||||||
@ -5216,6 +5217,7 @@
|
|||||||
this.throwVisibility = Math.min(width, height, throwVisibility);
|
this.throwVisibility = Math.min(width, height, throwVisibility);
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.clickOnTap = clickOnTap;
|
this.clickOnTap = clickOnTap;
|
||||||
|
this.triggerSVGClicks = triggerSVGClicks;
|
||||||
this.scale = startScale;
|
this.scale = startScale;
|
||||||
this.rotationDegrees = this.startRotationDegrees;
|
this.rotationDegrees = this.startRotationDegrees;
|
||||||
this.transformOrigin = transformOrigin;
|
this.transformOrigin = transformOrigin;
|
||||||
@ -5272,9 +5274,11 @@
|
|||||||
Therefore we make an exception and let the original click event through.
|
Therefore we make an exception and let the original click event through.
|
||||||
*/
|
*/
|
||||||
if (event.target.ownerSVGElement) {
|
if (event.target.ownerSVGElement) {
|
||||||
|
if (this.triggerSVGClicks) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (event.isTrusted) {
|
}
|
||||||
|
else if (event.isTrusted) {
|
||||||
Events.stop(event);
|
Events.stop(event);
|
||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
@ -5456,7 +5460,8 @@
|
|||||||
if (nearestNode.tagName == 'svg') {
|
if (nearestNode.tagName == 'svg') {
|
||||||
let handler = this.tapNodes.get(nearestNode);
|
let handler = this.tapNodes.get(nearestNode);
|
||||||
console.log("Clicking beneath SVG: to be done", handler);
|
console.log("Clicking beneath SVG: to be done", handler);
|
||||||
// nearestNode.dispatchEvent(new Event('click'))
|
if (this.triggerSVGClicks)
|
||||||
|
nearestNode.dispatchEvent(new Event('click'));
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
console.log("nearestNode clicked");
|
console.log("nearestNode clicked");
|
||||||
@ -6776,7 +6781,7 @@
|
|||||||
|
|
||||||
// create and dispatch event
|
// create and dispatch event
|
||||||
//--------------------
|
//--------------------
|
||||||
const eventStart = Event.create(elem, coords, opts.eventTypes[0], eventOpts);
|
const eventStart = Event$1.create(elem, coords, opts.eventTypes[0], eventOpts);
|
||||||
if (this.opts.debug) console.log('dispatch event', eventStart);
|
if (this.opts.debug) console.log('dispatch event', eventStart);
|
||||||
elem.dispatchEvent(eventStart);
|
elem.dispatchEvent(eventStart);
|
||||||
|
|
||||||
@ -6789,7 +6794,7 @@
|
|||||||
|
|
||||||
// create and dispatch event
|
// create and dispatch event
|
||||||
//--------------------
|
//--------------------
|
||||||
const eventComplete = Event.create(elem, coords, opts.eventTypes[1], eventOpts);
|
const eventComplete = Event$1.create(elem, coords, opts.eventTypes[1], eventOpts);
|
||||||
if (this.opts.debug) console.log('dispatch event', eventComplete);
|
if (this.opts.debug) console.log('dispatch event', eventComplete);
|
||||||
elem.dispatchEvent(eventComplete);
|
elem.dispatchEvent(eventComplete);
|
||||||
|
|
||||||
@ -6872,7 +6877,7 @@
|
|||||||
|
|
||||||
// create and dispatch event
|
// create and dispatch event
|
||||||
//--------------------
|
//--------------------
|
||||||
const event = Event.create(elem, from, opts.eventTypes[0], eventOpts);
|
const event = Event$1.create(elem, from, opts.eventTypes[0], eventOpts);
|
||||||
if (this.opts.debug) console.log('dispatch event', event);
|
if (this.opts.debug) console.log('dispatch event', event);
|
||||||
elem.dispatchEvent(event);
|
elem.dispatchEvent(event);
|
||||||
|
|
||||||
@ -6886,7 +6891,7 @@
|
|||||||
|
|
||||||
// create and dispatch event
|
// create and dispatch event
|
||||||
//--------------------
|
//--------------------
|
||||||
const event = Event.create(elem, from, opts.eventTypes[1], eventOpts);
|
const event = Event$1.create(elem, from, opts.eventTypes[1], eventOpts);
|
||||||
if (this.opts.debug) console.log('dispatch event', event);
|
if (this.opts.debug) console.log('dispatch event', event);
|
||||||
elem.dispatchEvent(event);
|
elem.dispatchEvent(event);
|
||||||
|
|
||||||
@ -6900,7 +6905,7 @@
|
|||||||
|
|
||||||
// create and dispatch event
|
// create and dispatch event
|
||||||
//--------------------
|
//--------------------
|
||||||
const event = Event.create(elem, from, opts.eventTypes[2], eventOpts);
|
const event = Event$1.create(elem, from, opts.eventTypes[2], eventOpts);
|
||||||
if (this.opts.debug) console.log('dispatch event', event);
|
if (this.opts.debug) console.log('dispatch event', event);
|
||||||
elem.dispatchEvent(event);
|
elem.dispatchEvent(event);
|
||||||
|
|
||||||
@ -7038,7 +7043,7 @@
|
|||||||
|
|
||||||
// create and dispatch event
|
// create and dispatch event
|
||||||
//--------------------
|
//--------------------
|
||||||
const event = Event.create(elem, from, opts.eventTypes[0], eventOpts);
|
const event = Event$1.create(elem, from, opts.eventTypes[0], eventOpts);
|
||||||
if (this.opts.debug) console.log('dispatch event', event);
|
if (this.opts.debug) console.log('dispatch event', event);
|
||||||
elem.dispatchEvent(event);
|
elem.dispatchEvent(event);
|
||||||
|
|
||||||
@ -7052,7 +7057,7 @@
|
|||||||
|
|
||||||
// create and dispatch event
|
// create and dispatch event
|
||||||
//--------------------
|
//--------------------
|
||||||
const event = Event.create(elem, from, opts.eventTypes[1], eventOpts);
|
const event = Event$1.create(elem, from, opts.eventTypes[1], eventOpts);
|
||||||
if (this.opts.debug) console.log('dispatch event', event);
|
if (this.opts.debug) console.log('dispatch event', event);
|
||||||
elem.dispatchEvent(event);
|
elem.dispatchEvent(event);
|
||||||
|
|
||||||
@ -7066,7 +7071,7 @@
|
|||||||
|
|
||||||
// create and dispatch event
|
// create and dispatch event
|
||||||
//--------------------
|
//--------------------
|
||||||
const event = Event.create(elem, from, opts.eventTypes[2], eventOpts);
|
const event = Event$1.create(elem, from, opts.eventTypes[2], eventOpts);
|
||||||
if (this.opts.debug) console.log('dispatch event', event);
|
if (this.opts.debug) console.log('dispatch event', event);
|
||||||
elem.dispatchEvent(event);
|
elem.dispatchEvent(event);
|
||||||
|
|
||||||
@ -7442,7 +7447,7 @@
|
|||||||
* @ignore
|
* @ignore
|
||||||
* @class
|
* @class
|
||||||
*/
|
*/
|
||||||
class Event {
|
class Event$1 {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an event object.
|
* Creates an event object.
|
||||||
|
9
dist/iwmlib.pixi.js
vendored
9
dist/iwmlib.pixi.js
vendored
@ -6929,6 +6929,7 @@
|
|||||||
height = null, // required
|
height = null, // required
|
||||||
resizable = false,
|
resizable = false,
|
||||||
clickOnTap = false,
|
clickOnTap = false,
|
||||||
|
triggerSVGClicks = false,
|
||||||
allowClickDistance = 44,
|
allowClickDistance = 44,
|
||||||
verbose = true,
|
verbose = true,
|
||||||
onResize = null,
|
onResize = null,
|
||||||
@ -6981,6 +6982,7 @@
|
|||||||
this.throwVisibility = Math.min(width, height, throwVisibility);
|
this.throwVisibility = Math.min(width, height, throwVisibility);
|
||||||
this.container = container;
|
this.container = container;
|
||||||
this.clickOnTap = clickOnTap;
|
this.clickOnTap = clickOnTap;
|
||||||
|
this.triggerSVGClicks = triggerSVGClicks;
|
||||||
this.scale = startScale;
|
this.scale = startScale;
|
||||||
this.rotationDegrees = this.startRotationDegrees;
|
this.rotationDegrees = this.startRotationDegrees;
|
||||||
this.transformOrigin = transformOrigin;
|
this.transformOrigin = transformOrigin;
|
||||||
@ -7037,9 +7039,11 @@
|
|||||||
Therefore we make an exception and let the original click event through.
|
Therefore we make an exception and let the original click event through.
|
||||||
*/
|
*/
|
||||||
if (event.target.ownerSVGElement) {
|
if (event.target.ownerSVGElement) {
|
||||||
|
if (this.triggerSVGClicks) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (event.isTrusted) {
|
}
|
||||||
|
else if (event.isTrusted) {
|
||||||
Events$1.stop(event);
|
Events$1.stop(event);
|
||||||
}
|
}
|
||||||
}, true);
|
}, true);
|
||||||
@ -7221,7 +7225,8 @@
|
|||||||
if (nearestNode.tagName == 'svg') {
|
if (nearestNode.tagName == 'svg') {
|
||||||
let handler = this.tapNodes.get(nearestNode);
|
let handler = this.tapNodes.get(nearestNode);
|
||||||
console.log("Clicking beneath SVG: to be done", handler);
|
console.log("Clicking beneath SVG: to be done", handler);
|
||||||
// nearestNode.dispatchEvent(new Event('click'))
|
if (this.triggerSVGClicks)
|
||||||
|
nearestNode.dispatchEvent(new Event('click'));
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
console.log("nearestNode clicked");
|
console.log("nearestNode clicked");
|
||||||
|
@ -80,9 +80,6 @@ for(let key of ['women', 'king']) {
|
|||||||
app.run()
|
app.run()
|
||||||
animatePolygons()
|
animatePolygons()
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<h1>
|
<h1>
|
||||||
Interactive Content
|
Interactive Content
|
||||||
</h1>
|
</h1>
|
||||||
@ -102,6 +99,11 @@ can be configured by allowClickDistance. The default value is 44px.
|
|||||||
<img draggable="false" style="position: absolute;" src="examples/women.jpeg" />
|
<img draggable="false" style="position: absolute;" src="examples/women.jpeg" />
|
||||||
<a style="position:absolute; top: 10px; right: 10px; color:white;" href="javascript:alert('test link')">A Link</a>
|
<a style="position:absolute; top: 10px; right: 10px; color:white;" href="javascript:alert('test link')">A Link</a>
|
||||||
<div onclick="alert('div clicked')" style="position:absolute; top: 30px; right: 10px; color:white;">A Div with click handler</div>
|
<div onclick="alert('div clicked')" style="position:absolute; top: 30px; right: 10px; color:white;">A Div with click handler</div>
|
||||||
|
<svg onclick="alert('svg clicked')" style="position: absolute; right: 0px; bottom: 0px; width: 32px; height: 32px;" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid meet">
|
||||||
|
<circle cx="50" cy="50" r="44" stroke="white" stroke-width="8" fill="gray" />
|
||||||
|
<circle cx="50" cy="32" r="7" fill="white" />
|
||||||
|
<line x1="50" y1="46" x2="50" y2="78" stroke="white" stroke-width="12" />
|
||||||
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -115,6 +117,7 @@ can be configured by allowClickDistance. The default value is 44px.
|
|||||||
height: 184,
|
height: 184,
|
||||||
clickOnTap: true,
|
clickOnTap: true,
|
||||||
throwVisibility: 88,
|
throwVisibility: 88,
|
||||||
|
triggerSVGClicks: true,
|
||||||
minScale: 0.5,
|
minScale: 0.5,
|
||||||
maxScale: 1.5})
|
maxScale: 1.5})
|
||||||
|
|
||||||
|
@ -1044,6 +1044,7 @@ export class DOMScatter extends AbstractScatter {
|
|||||||
height = null, // required
|
height = null, // required
|
||||||
resizable = false,
|
resizable = false,
|
||||||
clickOnTap = false,
|
clickOnTap = false,
|
||||||
|
triggerSVGClicks = false,
|
||||||
allowClickDistance = 44,
|
allowClickDistance = 44,
|
||||||
verbose = true,
|
verbose = true,
|
||||||
onResize = null,
|
onResize = null,
|
||||||
@ -1096,6 +1097,7 @@ export class DOMScatter extends AbstractScatter {
|
|||||||
this.throwVisibility = Math.min(width, height, throwVisibility)
|
this.throwVisibility = Math.min(width, height, throwVisibility)
|
||||||
this.container = container
|
this.container = container
|
||||||
this.clickOnTap = clickOnTap
|
this.clickOnTap = clickOnTap
|
||||||
|
this.triggerSVGClicks = triggerSVGClicks
|
||||||
this.scale = startScale
|
this.scale = startScale
|
||||||
this.rotationDegrees = this.startRotationDegrees
|
this.rotationDegrees = this.startRotationDegrees
|
||||||
this.transformOrigin = transformOrigin
|
this.transformOrigin = transformOrigin
|
||||||
@ -1152,9 +1154,11 @@ export class DOMScatter extends AbstractScatter {
|
|||||||
Therefore we make an exception and let the original click event through.
|
Therefore we make an exception and let the original click event through.
|
||||||
*/
|
*/
|
||||||
if (event.target.ownerSVGElement) {
|
if (event.target.ownerSVGElement) {
|
||||||
|
if (this.triggerSVGClicks) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (event.isTrusted) {
|
}
|
||||||
|
else if (event.isTrusted) {
|
||||||
Events.stop(event)
|
Events.stop(event)
|
||||||
}
|
}
|
||||||
}, true)
|
}, true)
|
||||||
@ -1336,7 +1340,8 @@ export class DOMScatter extends AbstractScatter {
|
|||||||
if (nearestNode.tagName == 'svg') {
|
if (nearestNode.tagName == 'svg') {
|
||||||
let handler = this.tapNodes.get(nearestNode)
|
let handler = this.tapNodes.get(nearestNode)
|
||||||
console.log("Clicking beneath SVG: to be done", handler)
|
console.log("Clicking beneath SVG: to be done", handler)
|
||||||
// nearestNode.dispatchEvent(new Event('click'))
|
if (this.triggerSVGClicks)
|
||||||
|
nearestNode.dispatchEvent(new Event('click'))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
console.log("nearestNode clicked")
|
console.log("nearestNode clicked")
|
||||||
|
Loading…
Reference in New Issue
Block a user