From 974e6b27508caf60116548f2342ebb49ae226e48 Mon Sep 17 00:00:00 2001 From: alistair3149 Date: Mon, 27 May 2024 17:16:23 -0400 Subject: [PATCH] =?UTF-8?q?feat(core):=20=E2=9C=A8=20add=20config=20to=20c?= =?UTF-8?q?hange=20overflow=20inherited=20classes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + includes/Hooks/ResourceLoaderHooks.php | 1 + resources/skins.citizen.scripts/overflowElements.js | 6 +++--- skin.json | 9 +++++++++ .../integration/Hooks/ResourceLoaderHooksTest.php | 4 ++++ 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6576d19a..b9e0ffe6 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,7 @@ Name | Description | Values | Default `$wgCitizenEnableARFonts` | Enable included Noto Naskh Arabic for wikis that serve Arabic | `true` - enable; `false` - disable | `false` `$wgCitizenEnableCJKFonts` | Enable included Noto Sans CJK for wikis that serves CJK languages | `true` - enable; `false` - disable | `false` `$wgCitizenEnablePreferences` | Enable the preferences menu | `true` - enable; `false` - disable | `true` +`$wgCitizenOverflowInheritedClasses` | Defines css classes inherited by the overflow wrapper | List of css classes. Extend with `$wgCitizenOverflowInheritedClasses[] = 'my_class';` | `["floatleft", "floatright" ]` `$wgCitizenOverflowNowrapClasses` | Defines css classes ignored by the overflow wrapper | List of css classes. Extend with `$wgCitizenOverflowNowrapClasses[] = 'my_class';` | `["citizen-table-nowrap", "diff", "mw-changeslist-line", "mw-recentchanges-table", "infobox", "cargoDynamicTable", "dataTable", "srf-datatable", "smw-datatable", "mw-capiunto-infobox" ]` ### Search suggestions diff --git a/includes/Hooks/ResourceLoaderHooks.php b/includes/Hooks/ResourceLoaderHooks.php index 0a70b57c..59293630 100644 --- a/includes/Hooks/ResourceLoaderHooks.php +++ b/includes/Hooks/ResourceLoaderHooks.php @@ -47,6 +47,7 @@ class ResourceLoaderHooks { ) { return [ 'wgCitizenEnablePreferences' => $config->get( 'CitizenEnablePreferences' ), + 'wgCitizenOverflowInheritedClasses' => $config->get( 'CitizenOverflowInheritedClasses' ), 'wgCitizenOverflowNowrapClasses' => $config->get( 'CitizenOverflowNowrapClasses' ), 'wgCitizenSearchModule' => $config->get( 'CitizenSearchModule' ) ]; diff --git a/resources/skins.citizen.scripts/overflowElements.js b/resources/skins.citizen.scripts/overflowElements.js index 9703acab..16e2a877 100644 --- a/resources/skins.citizen.scripts/overflowElements.js +++ b/resources/skins.citizen.scripts/overflowElements.js @@ -98,10 +98,10 @@ class OverflowElement { /** * Filters and adds inherited classes to the wrapper element. * - * @param {Array} inheritedClasses - An array of inherited classes to handle. * @return {void} */ - handleInheritedClasses( inheritedClasses ) { + handleInheritedClasses() { + const inheritedClasses = config.wgCitizenOverflowInheritedClasses; const filteredClasses = inheritedClasses.filter( ( cls ) => this.element.classList.contains( cls ) ); filteredClasses.forEach( ( cls ) => { @@ -146,7 +146,7 @@ class OverflowElement { const wrapper = document.createElement( 'div' ); wrapper.className = 'citizen-overflow-wrapper'; - this.handleInheritedClasses( [ 'floatleft', 'floatright' ] ); + this.handleInheritedClasses(); parentNode.insertBefore( wrapper, this.element ); wrapper.appendChild( this.element ); diff --git a/skin.json b/skin.json index 10f8b042..8ae2bd92 100644 --- a/skin.json +++ b/skin.json @@ -687,6 +687,15 @@ "descriptionmsg": "citizen-config-enablepreferences", "public": true }, + "OverflowInheritedClasses": { + "value": [ + "floatleft", + "floatright" + ], + "description": "Defines css classes inherited by overflow wrapper", + "descriptionmsg": "citizen-config-overflowinheritedclasses", + "public": true + }, "OverflowNowrapClasses": { "value": [ "citizen-table-nowrap", diff --git a/tests/phpunit/integration/Hooks/ResourceLoaderHooksTest.php b/tests/phpunit/integration/Hooks/ResourceLoaderHooksTest.php index cfb0350b..e0e15d4c 100644 --- a/tests/phpunit/integration/Hooks/ResourceLoaderHooksTest.php +++ b/tests/phpunit/integration/Hooks/ResourceLoaderHooksTest.php @@ -19,6 +19,7 @@ class ResourceLoaderHooksTest extends MediaWikiIntegrationTestCase { public function testCitizenResourceLoaderConfig() { $this->overrideConfigValues( [ 'CitizenEnablePreferences' => false, + 'CitizenOverflowInheritedClasses' => false, 'CitizenOverflowNowrapClasses' => false, 'CitizenSearchModule' => false, ] ); @@ -33,6 +34,7 @@ class ResourceLoaderHooksTest extends MediaWikiIntegrationTestCase { $this->assertArraySubmapSame( [ 'wgCitizenEnablePreferences' => false, 'wgCitizenSearchModule' => false, + 'wgCitizenOverflowInheritedClasses' => false, 'wgCitizenOverflowNowrapClasses' => false, ], $config ); } @@ -44,6 +46,7 @@ class ResourceLoaderHooksTest extends MediaWikiIntegrationTestCase { public function testCitizenResourceLoaderConfigAllTrue() { $this->overrideConfigValues( [ 'CitizenEnablePreferences' => true, + 'CitizenOverflowInheritedClasses' => true, 'CitizenOverflowNowrapClasses' => true, 'CitizenSearchModule' => true, ] ); @@ -57,6 +60,7 @@ class ResourceLoaderHooksTest extends MediaWikiIntegrationTestCase { $this->assertArraySubmapSame( [ 'wgCitizenEnablePreferences' => true, + 'whCitizenOverflowInheritedClasses' => true, 'wgCitizenOverflowNowrapClasses' => true, 'wgCitizenSearchModule' => true, ], $config );