aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>2025-04-02 21:12:16 +0000
committerGerrit Code Review <gerrit@wikimedia.org>2025-04-02 21:12:16 +0000
commita767d88e89fafbd4e150839fb2253df51fe0f2ae (patch)
tree3c18f468b3a4f58d7aee19b8167c2966c6d27a6f
parent9bded5ab2f556bfbd0628026dd291e5fbd4686a8 (diff)
parentc7ecb1774025ed7f1503995233600a1d4a74b38c (diff)
downloadmediawikicore-a767d88e89fafbd4e150839fb2253df51fe0f2ae.tar.gz
mediawikicore-a767d88e89fafbd4e150839fb2253df51fe0f2ae.zip
Merge "Special:Block [Codex]: Pressing enter should submit the form"
-rw-r--r--resources/src/mediawiki.special.block/SpecialBlock.vue14
-rw-r--r--tests/jest/mediawiki.special.block/SpecialBlock.test.js17
2 files changed, 31 insertions, 0 deletions
diff --git a/resources/src/mediawiki.special.block/SpecialBlock.vue b/resources/src/mediawiki.special.block/SpecialBlock.vue
index 96c02c023096..54a0740bc1c3 100644
--- a/resources/src/mediawiki.special.block/SpecialBlock.vue
+++ b/resources/src/mediawiki.special.block/SpecialBlock.vue
@@ -435,6 +435,20 @@ module.exports = exports = defineComponent( {
}
} );
+ // Submit the form if form is visible and 'Enter' is pressed
+ watch( formVisible, ( newValue ) => {
+ if ( newValue ) {
+ nextTick( () => {
+ const blockForm = document.querySelector( '.mw-block__block-form' );
+ blockForm.addEventListener( 'keypress', ( event ) => {
+ if ( event.key === 'Enter' ) {
+ onFormSubmission( event );
+ }
+ } );
+ } );
+ }
+ } );
+
// Show the 'Add block' button if:
// * the target user exists AND EITHER
// * multiblocks is enabled, OR
diff --git a/tests/jest/mediawiki.special.block/SpecialBlock.test.js b/tests/jest/mediawiki.special.block/SpecialBlock.test.js
index c9ee64fe06d2..9970666ea6dd 100644
--- a/tests/jest/mediawiki.special.block/SpecialBlock.test.js
+++ b/tests/jest/mediawiki.special.block/SpecialBlock.test.js
@@ -354,6 +354,23 @@ describe( 'SpecialBlock', () => {
expect( wrapper.find( '.mw-block__create-button' ).exists() ).toBeFalsy();
} );
+ it( 'should emit "submit" event when Enter key is pressed', async () => {
+ wrapper = withSubmission(
+ { blockTargetUser: 'ActiveBlockedUser', blockTargetExists: true },
+ { block: { user: 'ActiveBlockedUser' } }
+ );
+ await flushPromises();
+ // Create a new block.
+ await wrapper.find( '.mw-block__create-button' ).trigger( 'click' );
+ // Set expiry date
+ await wrapper.find( '.cdx-radio__input[value=datetime]' ).setValue( true );
+ await wrapper.find( '[name=wpExpiry-other]' ).setValue( '2999-01-23T12:34' );
+ expect( wrapper.find( '.mw-block-success' ).exists() ).toBeFalsy();
+ // Simulate a press enter
+ await wrapper.find( '[name="wpReason-other"]' ).trigger( 'keypress', { key: 'Enter' } );
+ expect( wrapper.find( '.mw-block-success' ).exists() ).toBeTruthy();
+ } );
+
afterEach( () => {
wrapper.unmount();
} );