Enable collapsible content in mobile talk page lede content

Bug: T323639
Change-Id: I3cfc8e7337172b44156a7f3bed9ff134c0851475
This commit is contained in:
Bartosz Dziewoński 2022-12-08 23:42:29 +01:00 committed by Jdlrobson
parent 2c9ec88c0f
commit af7097f02f
2 changed files with 22 additions and 0 deletions

View file

@ -230,6 +230,13 @@ class PageHooks implements
] ) )
)
);
// Preload jquery.makeCollapsible for LedeSectionDialog.
// Using the same approach as in Skin::getDefaultModules in MediaWiki core.
if ( strpos( $output->getHTML(), 'mw-collapsible' ) !== false ) {
$output->addModules( 'jquery.makeCollapsible' );
$output->addModuleStyles( 'jquery.makeCollapsible.styles' );
}
}
}
}

View file

@ -36,7 +36,22 @@ LedeSectionDialog.prototype.initialize = function () {
LedeSectionDialog.prototype.getSetupProcess = function ( data ) {
return LedeSectionDialog.super.prototype.getSetupProcess.call( this, data )
.next( function () {
var dialog = this;
this.contentLayout.$element.empty().append( data.$content );
// Enable collapsible content (T323639), which is normally not handled on mobile (T111565).
// It's safe to do this twice if that changes (makeCollapsible() checks if each element was
// already handled). Using the same approach as in 'mediawiki.page.ready' in MediaWiki core.
var $collapsible = this.contentLayout.$element.find( '.mw-collapsible' );
if ( $collapsible.length ) {
// This module is also preloaded in PageHooks to avoid visual jumps when things collapse.
mw.loader.using( 'jquery.makeCollapsible' ).then( function () {
$collapsible.makeCollapsible();
$collapsible.on( 'afterExpand.mw-collapsible afterCollapse.mw-collapsible', function () {
dialog.updateSize();
} );
} );
}
}, this );
};