src/mobile.editor.overlay/blockMessageDrawer.js
const
Drawer = require( '../mobile.startup/Drawer' ),
BlockMessageDetails = require( './BlockMessageDetails' );
/**
* @private
* @typedef {Object} BlockMessageOptions
* @property {number} blockId representing the block
* @property {boolean} partial is this a partial block?
* @property {Object} creator
* @property {string} creator.name of the blocker
* @property {string} creator.url associated with the block
* @property {string} reason for block
* @property {string} [duration] of block e.g. "1 week"
* @property {string} [expiry] of block, wrapped in parentheses
* e.g. "(1st September 2019)"
*/
/**
* This creates the drawer at the bottom of the screen that appears when a
* blocked user tries to edit.
*
* @private
* @param {BlockMessageOptions} props
* @return {module:mobile.startup/Drawer}
*/
module.exports = function blockMessageDrawer( props ) {
const blockDrawer = new Drawer( {
className: 'drawer block-message',
onBeforeHide: function ( drawer ) {
drawer.$el.remove();
},
onShow: function () {
const $drawer = blockDrawer.$el.find( '.drawer.block-message' ),
drawerTop = $drawer.offset().top - 100,
creatorTop = blockDrawer.$el.find( '.block-message-creator' ).offset().top - 100,
buttonsTop = blockDrawer.$el.find( '.block-message-buttons' ).offset().top - 100,
$seeMore = blockDrawer.$el.find( '.block-message-see-more' ),
wiki = mw.config.get( 'wgDBname' );
$drawer.css( 'top', drawerTop + ( buttonsTop - creatorTop ) );
$seeMore.on(
'click',
function () {
const $container = blockDrawer.$el.find( '.block-message-container' );
$drawer.css( 'top', 0 );
$container.css( 'overflow-y', 'auto' );
$container.css( 'height', buttonsTop - $container.offset().top );
$seeMore.hide();
if ( mw.config.get( 'wgMFTrackBlockNotices' ) ) {
mw.track( 'counter.MediaWiki.BlockNotices.' + wiki + '.MobileFrontend.reasonShown', 1 );
}
}
);
if ( mw.config.get( 'wgMFTrackBlockNotices' ) ) {
mw.track( 'counter.MediaWiki.BlockNotices.' + wiki + '.MobileFrontend.shown', 1 );
}
},
children: [
( new BlockMessageDetails( props ) ).$el
]
} );
return blockDrawer;
};