Implemented stacked button groups.

This commit is contained in:
2019-07-31 16:12:00 +02:00
parent 73342a0506
commit 614b4d8350
70 changed files with 1782 additions and 880 deletions
+38 -117
View File
@@ -263,12 +263,20 @@
<span class="subtitle">Methods</span>
<li class="parent " data-name="ButtonGroup#_stackHorizontal"><a href="ButtonGroup.html#_stackHorizontal">_stackHorizontal</a></li>
<li class="parent " data-name="ButtonGroup#_stackVertical"><a href="ButtonGroup.html#_stackVertical">_stackVertical</a></li>
<li class="parent " data-name="ButtonGroup#capture"><a href="ButtonGroup.html#capture">capture</a></li>
<li class="parent " data-name="ButtonGroup#hide"><a href="ButtonGroup.html#hide">hide</a></li>
<li class="parent " data-name="ButtonGroup#layout"><a href="ButtonGroup.html#layout">layout</a></li>
<li class="parent " data-name="ButtonGroup#show"><a href="ButtonGroup.html#show">show</a></li>
<li class="parent " data-name="ButtonGroup#stack"><a href="ButtonGroup.html#stack">stack</a></li>
</ul>
<ul class="events itemMembers">
@@ -1634,9 +1642,7 @@ export default class UITest {
if (opts.eventType) {
opts.eventTypes = opts.eventType
}
opts.eventTypes = Array.isArray(opts.eventTypes)
? opts.eventTypes
: [opts.eventTypes]
opts.eventTypes = Array.isArray(opts.eventTypes) ? opts.eventTypes : [opts.eventTypes]
// timeline
//--------------------
@@ -1674,14 +1680,8 @@ export default class UITest {
if (opts.eventTypes[0]) {
// create and dispatch event
//--------------------
const eventStart = Event.create(
elem,
coords,
opts.eventTypes[0],
eventOpts
)
if (this.opts.debug)
console.log('dispatch event', eventStart)
const eventStart = Event.create(elem, coords, opts.eventTypes[0], eventOpts)
if (this.opts.debug) console.log('dispatch event', eventStart)
elem.dispatchEvent(eventStart)
// onStart
@@ -1693,14 +1693,8 @@ export default class UITest {
// create and dispatch event
//--------------------
const eventComplete = Event.create(
elem,
coords,
opts.eventTypes[1],
eventOpts
)
if (this.opts.debug)
console.log('dispatch event', eventComplete)
const eventComplete = Event.create(elem, coords, opts.eventTypes[1], eventOpts)
if (this.opts.debug) console.log('dispatch event', eventComplete)
elem.dispatchEvent(eventComplete)
// onComplete
@@ -1795,14 +1789,8 @@ export default class UITest {
onStart: () => {
// create and dispatch event
//--------------------
const event = Event.create(
elem,
from,
opts.eventTypes[0],
eventOpts
)
if (this.opts.debug)
console.log('dispatch event', event)
const event = Event.create(elem, from, opts.eventTypes[0], eventOpts)
if (this.opts.debug) console.log('dispatch event', event)
elem.dispatchEvent(event)
// onStart
@@ -1814,14 +1802,8 @@ export default class UITest {
onUpdate: () => {
// create and dispatch event
//--------------------
const event = Event.create(
elem,
from,
opts.eventTypes[1],
eventOpts
)
if (this.opts.debug)
console.log('dispatch event', event)
const event = Event.create(elem, from, opts.eventTypes[1], eventOpts)
if (this.opts.debug) console.log('dispatch event', event)
elem.dispatchEvent(event)
// onUpdate
@@ -1833,14 +1815,8 @@ export default class UITest {
onComplete: () => {
// create and dispatch event
//--------------------
const event = Event.create(
elem,
from,
opts.eventTypes[2],
eventOpts
)
if (this.opts.debug)
console.log('dispatch event', event)
const event = Event.create(elem, from, opts.eventTypes[2], eventOpts)
if (this.opts.debug) console.log('dispatch event', event)
elem.dispatchEvent(event)
// onComplete
@@ -1991,66 +1967,39 @@ export default class UITest {
onStart: () => {
// create and dispatch event
//--------------------
const event = Event.create(
elem,
from,
opts.eventTypes[0],
eventOpts
)
if (this.opts.debug)
console.log('dispatch event', event)
const event = Event.create(elem, from, opts.eventTypes[0], eventOpts)
if (this.opts.debug) console.log('dispatch event', event)
elem.dispatchEvent(event)
// onStart
//--------------------
if (
opts.onStart &amp;&amp;
(opts.doubleCallbacks || key === 0)
) {
if (opts.onStart &amp;&amp; (opts.doubleCallbacks || key === 0)) {
opts.onStart.call(this, event)
}
},
onUpdate: () => {
// create and dispatch event
//--------------------
const event = Event.create(
elem,
from,
opts.eventTypes[1],
eventOpts
)
if (this.opts.debug)
console.log('dispatch event', event)
const event = Event.create(elem, from, opts.eventTypes[1], eventOpts)
if (this.opts.debug) console.log('dispatch event', event)
elem.dispatchEvent(event)
// onUpdate
//--------------------
if (
opts.onUpdate &amp;&amp;
(opts.doubleCallbacks || key === 0)
) {
if (opts.onUpdate &amp;&amp; (opts.doubleCallbacks || key === 0)) {
opts.onUpdate.call(this, event)
}
},
onComplete: () => {
// create and dispatch event
//--------------------
const event = Event.create(
elem,
from,
opts.eventTypes[2],
eventOpts
)
if (this.opts.debug)
console.log('dispatch event', event)
const event = Event.create(elem, from, opts.eventTypes[2], eventOpts)
if (this.opts.debug) console.log('dispatch event', event)
elem.dispatchEvent(event)
// onComplete
//--------------------
if (
opts.onComplete &amp;&amp;
(opts.doubleCallbacks || key === 0)
) {
if (opts.onComplete &amp;&amp; (opts.doubleCallbacks || key === 0)) {
opts.onComplete.call(this, event)
}
}
@@ -2168,9 +2117,7 @@ export default class UITest {
'No execution time was specified for this action, and a default interval was not set in the class constructor!'
)
}
timelinePosition =
Math.max(...this._timelinePositions) +
(this.opts.defaultInterval || 1)
timelinePosition = Math.max(...this._timelinePositions) + (this.opts.defaultInterval || 1)
}
if (opts === null) {
@@ -2245,12 +2192,8 @@ class Util {
* @return {HTMLElement|string} element - The HTML element on which the event is to be executed, e.g. button, document, h2, canvas, etc. or an selector string. If a selector has been specified, it is evaluated immediately before the event is called using the querySelector method.
*/
static extractElement(context, element) {
const cont = Util.isFrame(context)
? context.contentDocument
: context.document
const elem = Util.isString(element)
? cont.querySelector(element)
: element
const cont = Util.isFrame(context) ? context.contentDocument : context.document
const elem = Util.isString(element) ? cont.querySelector(element) : element
return elem
}
@@ -2306,9 +2249,7 @@ class Util {
type: 'thru'
}
} else {
opts.bezier.values = opts.bezier.values.map(it =>
Util.extractPosition(it)
)
opts.bezier.values = opts.bezier.values.map(it => Util.extractPosition(it))
bezier = opts.bezier
}
@@ -2444,16 +2385,9 @@ class Event {
* @param {string} type - The type of the event, see https://developer.mozilla.org/de/docs/Web/Events
* @param {object} opts - An options object. Every paramter of the event object can be overridden, see e.g. https://developer.mozilla.org/de/docs/Web/API/MouseEvent for all the properties.
*/
static create(
target,
position = { x: 0, y: 0 },
type = 'pointerup',
opts = {}
) {
static create(target, position = { x: 0, y: 0 }, type = 'pointerup', opts = {}) {
const rect =
typeof target.getBoundingClientRect === 'function'
? target.getBoundingClientRect()
: { x: 0, y: 0 }
typeof target.getBoundingClientRect === 'function' ? target.getBoundingClientRect() : { x: 0, y: 0 }
// EventInit
const eventOpts = {
@@ -2512,25 +2446,12 @@ class Event {
if (type.startsWith('pointer')) {
return new PointerEvent(
type,
Object.assign(
{},
eventOpts,
uiEventOpts,
mouseEventOpts,
pointerEventOpts,
opts
)
Object.assign({}, eventOpts, uiEventOpts, mouseEventOpts, pointerEventOpts, opts)
)
} else if (type.startsWith('touch')) {
return new TouchEvent(
type,
Object.assign({}, eventOpts, uiEventOpts, touchEventOpts, opts)
)
return new TouchEvent(type, Object.assign({}, eventOpts, uiEventOpts, touchEventOpts, opts))
} else {
return new MouseEvent(
type,
Object.assign({}, eventOpts, uiEventOpts, mouseEventOpts, opts)
)
return new MouseEvent(type, Object.assign({}, eventOpts, uiEventOpts, mouseEventOpts, opts))
}
}
}
@@ -2547,7 +2468,7 @@ class Event {
<footer class="content-size">
<div class="footer">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.3</a> on Tue Jul 30 2019 10:48:36 GMT+0200 (Mitteleuropäische Sommerzeit)
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.3</a> on Wed Jul 31 2019 15:00:47 GMT+0200 (Mitteleuropäische Sommerzeit)
</div>
</footer>
</div>