mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Popups
synced 2025-01-07 19:54:13 +00:00
e4719c4918
Action creator changes: * Make the linkAbandon action creator asynchronous by splitting it into two distinct actions, LINK_ABANDON_START and _END, the latter of which is dispatched after a 300 ms delay. * Introduce the previewDwell and previewAbandon action creators. The latter is an asynchronous action that mirrors the linkAbandon action. Reducer changes: * Make the LINK_DWELL, LINK_ABANDON_END, and PREVIEW_ABANDON_END action hide a preview, if one has been shown. * Make the LINK_ABANDON_END action NOOP if: * The user has interacted with another link, or * The user is interacting with the preview. Supporting changes: * Update the mw.popups.reducers#preview and #renderer unit tests to use an empty previous state so that the tests are more resilient to modifications of the state tree. Change-Id: I2ecf575bbb59bb64772f75da9b5a29c071b46a8d
26 lines
637 B
JavaScript
26 lines
637 B
JavaScript
( function ( mw ) {
|
|
|
|
/**
|
|
* Creates an instance of the render change listener.
|
|
*
|
|
* @param {Object} boundActions
|
|
* @return {ext.popups.ChangeListener}
|
|
*/
|
|
mw.popups.changeListeners.render = function ( boundActions ) {
|
|
var preview;
|
|
|
|
return function ( prevState, state ) {
|
|
if ( state.preview.shouldShow && !preview ) {
|
|
preview = mw.popups.renderer.render( state.preview.fetchResponse );
|
|
preview.show( state.preview.activeEvent, boundActions );
|
|
} else if ( !state.preview.shouldShow && preview ) {
|
|
preview.hide()
|
|
.done( function () {
|
|
preview = undefined;
|
|
} );
|
|
}
|
|
};
|
|
};
|
|
|
|
}( mediaWiki ) );
|