mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	We now check whether an IME is currently composing and do not process any such key==="Enter" events as the Enter/Return key. Fixes #22062.
		
			
				
	
	
		
			79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
const {strict: assert} = require("assert");
 | 
						|
 | 
						|
const {zrequire} = require("../zjsunit/namespace");
 | 
						|
const {run_test} = require("../zjsunit/test");
 | 
						|
const $ = require("../zjsunit/zjquery");
 | 
						|
 | 
						|
const keydown_util = zrequire("keydown_util");
 | 
						|
 | 
						|
run_test("test_early_returns", () => {
 | 
						|
    const $stub = $.create("stub");
 | 
						|
    const opts = {
 | 
						|
        $elem: $stub,
 | 
						|
        handlers: {
 | 
						|
            ArrowLeft: /* istanbul ignore next */ () => {
 | 
						|
                throw new Error("do not dispatch this with alt key");
 | 
						|
            },
 | 
						|
        },
 | 
						|
    };
 | 
						|
 | 
						|
    keydown_util.handle(opts);
 | 
						|
 | 
						|
    const e1 = {
 | 
						|
        type: "keydown",
 | 
						|
        key: "a", // not in keys
 | 
						|
    };
 | 
						|
 | 
						|
    $stub.trigger(e1);
 | 
						|
 | 
						|
    const e2 = {
 | 
						|
        type: "keydown",
 | 
						|
        key: "Enter", // no handler
 | 
						|
    };
 | 
						|
 | 
						|
    $stub.trigger(e2);
 | 
						|
 | 
						|
    const e3 = {
 | 
						|
        type: "keydown",
 | 
						|
        key: "ArrowLeft",
 | 
						|
        altKey: true, // let browser handle
 | 
						|
    };
 | 
						|
 | 
						|
    $stub.trigger(e3);
 | 
						|
});
 | 
						|
 | 
						|
run_test("test_ime_enter_events", () => {
 | 
						|
    // these events shouldn't be recognized as a return keypress.
 | 
						|
    const event_1 = {
 | 
						|
        key: "Enter",
 | 
						|
        originalEvent: {
 | 
						|
            isComposing: true,
 | 
						|
        },
 | 
						|
    };
 | 
						|
 | 
						|
    const event_2 = {
 | 
						|
        key: "Random",
 | 
						|
        originalEvent: {
 | 
						|
            isComposing: false,
 | 
						|
        },
 | 
						|
    };
 | 
						|
    assert.ok(!keydown_util.is_enter_event(event_1));
 | 
						|
    assert.ok(!keydown_util.is_enter_event(event_2));
 | 
						|
 | 
						|
    // these are valid return keypress events.
 | 
						|
    const event_3 = {
 | 
						|
        key: "Enter",
 | 
						|
        originalEvent: {
 | 
						|
            isComposing: false,
 | 
						|
        },
 | 
						|
    };
 | 
						|
    const event_4 = {
 | 
						|
        key: "Enter",
 | 
						|
        // Edgacase: if there is no originalEvent, JQuery didn't provide the object.
 | 
						|
    };
 | 
						|
    assert.ok(keydown_util.is_enter_event(event_3));
 | 
						|
    assert.ok(keydown_util.is_enter_event(event_4));
 | 
						|
});
 |