diff --git a/includes/FeatureManagement/FeatureManager.php b/includes/FeatureManagement/FeatureManager.php index 4c3937100..7dbc7fd8b 100644 --- a/includes/FeatureManagement/FeatureManager.php +++ b/includes/FeatureManagement/FeatureManager.php @@ -209,14 +209,6 @@ class FeatureManager { $prefix .= 'skin-theme-'; break; case CONSTANTS::FEATURE_LIMITED_WIDTH: - if ( ConfigHelper::shouldDisable( $config->get( 'VectorMaxWidthOptions' ), $request, $title ) ) { - return 'vector-feature-limited-width-clientpref--excluded'; - } - - $suffixEnabled = 'clientpref-1'; - $suffixDisabled = 'clientpref-0'; - - break; case CONSTANTS::FEATURE_TOC_PINNED: case CONSTANTS::FEATURE_APPEARANCE_PINNED: $suffixEnabled = 'clientpref-1'; diff --git a/resources/skins.vector.styles/components/Appearance.less b/resources/skins.vector.styles/components/Appearance.less index 349bfeca3..ce25e027d 100644 --- a/resources/skins.vector.styles/components/Appearance.less +++ b/resources/skins.vector.styles/components/Appearance.less @@ -18,3 +18,17 @@ .client-nojs .vector-appearance-landmark { display: none; } + +// By default, limited width client pref should be hidden unless the breakpoint below is reached. +#skin-client-prefs-vector-feature-limited-width { + display: none; +} + +// Note on certain pages the control will have no effect e.g. Special:RecentChanges +// Defining this at 1400px is a product decision so do not change it +// (more context at https://phabricator.wikimedia.org/T326887#8540889) +@media ( min-width: 1400px ) { + #skin-client-prefs-vector-feature-limited-width { + display: block; + } +} diff --git a/resources/skins.vector.styles/components/BottomDock.less b/resources/skins.vector.styles/components/BottomDock.less index 8511b2949..b2bbb6a5d 100644 --- a/resources/skins.vector.styles/components/BottomDock.less +++ b/resources/skins.vector.styles/components/BottomDock.less @@ -31,6 +31,12 @@ display: none; } +// On pages that have $wgVectorMaxWidthOptions['exclude'] true, +// the toggle should be hidden. This rule overrides the media query below. +html.vector-feature-limited-width-clientpref--excluded .vector-limited-width-toggle.cdx-button { + display: none; +} + // Note on certain pages the control will have no effect e.g. Special:RecentChanges // Defining this at 1400px is a product decision so do not change it // (more context at https://phabricator.wikimedia.org/T326887#8540889) diff --git a/resources/skins.vector.styles/layouts/grid.less b/resources/skins.vector.styles/layouts/grid.less index f6289f8a0..e8f26224f 100644 --- a/resources/skins.vector.styles/layouts/grid.less +++ b/resources/skins.vector.styles/layouts/grid.less @@ -127,7 +127,6 @@ column-gap: @grid-column-gap; } - .vector-feature-limited-width-clientpref--excluded .mw-body, .vector-feature-limited-width-clientpref-0 .mw-body, .vector-feature-limited-width-content-disabled .mw-body { grid-template-columns: ~'minmax(0, 1fr) min-content'; diff --git a/resources/skins.vector.styles/layouts/screen.less b/resources/skins.vector.styles/layouts/screen.less index 794ade384..2d56c054b 100644 --- a/resources/skins.vector.styles/layouts/screen.less +++ b/resources/skins.vector.styles/layouts/screen.less @@ -158,9 +158,6 @@ body { .mixin-vector-page-container-sizing(); } -.vector-feature-limited-width-clientpref--excluded .mw-page-container, -.vector-feature-limited-width-clientpref--excluded .vector-sticky-header, -.vector-feature-limited-width-clientpref--excluded .mw-header, .vector-feature-limited-width-clientpref-0 .mw-page-container, .vector-feature-limited-width-clientpref-0 .vector-sticky-header, .vector-feature-limited-width-clientpref-0 .mw-header { diff --git a/skin.json b/skin.json index 6d870fa9f..cdc9d742f 100644 --- a/skin.json +++ b/skin.json @@ -388,7 +388,6 @@ "vector-feature-limited-width-name", "vector-feature-limited-width-0-label", "vector-feature-limited-width-1-label", - "vector-feature-limited-width-exclusion-notice", "vector-feature-custom-font-size-name", "vector-feature-custom-font-size-0-label", "vector-feature-custom-font-size-1-label", diff --git a/tests/phpunit/integration/FeatureManagement/FeatureManagerTest.php b/tests/phpunit/integration/FeatureManagement/FeatureManagerTest.php index 8ccbdf79e..8c7d84c7f 100644 --- a/tests/phpunit/integration/FeatureManagement/FeatureManagerTest.php +++ b/tests/phpunit/integration/FeatureManagement/FeatureManagerTest.php @@ -91,32 +91,26 @@ class FeatureManagerTest extends \MediaWikiIntegrationTestCase { } /** ensure the class is present when disabled and absent when not */ - public static function provideGetFeatureBodyClassExcluded() { + public static function provideGetFeatureBodyClassNightModeDisabled() { return [ [ true ], [ false ] ]; } /** - * @dataProvider provideGetFeatureBodyClassExcluded + * @dataProvider provideGetFeatureBodyClassNightModeDisabled * @covers ::getFeatureBodyClass pref night mode specifics - disabled pages */ - public function testGetFeatureBodyClassExcluded( $disabled ) { + public function testGetFeatureBodyClassNightModeDisabled( $disabled ) { $featureManager = $this->newFeatureManager(); $featureManager->registerFeature( CONSTANTS::PREF_NIGHT_MODE, [] ); - $featureManager->registerFeature( CONSTANTS::FEATURE_LIMITED_WIDTH, [] ); $context = RequestContext::getMain(); $context->setTitle( Title::makeTitle( NS_MAIN, 'Main Page' ) ); $this->overrideConfigValues( [ 'VectorNightModeOptions' => [ 'exclude' => [ 'mainpage' => $disabled ] ] ] ); - $this->overrideConfigValues( [ 'VectorMaxWidthOptions' => [ 'exclude' => [ 'mainpage' => $disabled ] ] ] ); - - $bodyClasses = $featureManager->getFeatureBodyClass(); - $this->assertEquals( - in_array( 'skin-theme-clientpref--excluded', $bodyClasses ) && - in_array( 'vector-feature-limited-width-clientpref--excluded', $bodyClasses ), + in_array( 'skin-theme-clientpref--excluded', $featureManager->getFeatureBodyClass() ), $disabled ); }