Skip to content

Commit 19b32a7

Browse files
authored
revert: fix stop processing input when composing with an IME (#1226) (#1235)
This reverts commit 7f5ba08.
1 parent 3b569b6 commit 19b32a7

File tree

7 files changed

+1
-164
lines changed

7 files changed

+1
-164
lines changed

packages/autocomplete-core/src/__tests__/getInputProps.test.ts

Lines changed: 1 addition & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { fireEvent, waitFor } from '@testing-library/dom';
1+
import { waitFor } from '@testing-library/dom';
22
import userEvent from '@testing-library/user-event';
33

44
import {
@@ -645,66 +645,6 @@ describe('getInputProps', () => {
645645

646646
expect(environment.clearTimeout).toHaveBeenLastCalledWith(999);
647647
});
648-
649-
test('stops process if IME composition is in progress', () => {
650-
const getSources = jest.fn((..._args: any[]) => {
651-
return [
652-
createSource({
653-
getItems() {
654-
return [{ label: '1' }, { label: '2' }];
655-
},
656-
}),
657-
];
658-
});
659-
const { inputElement } = createPlayground(createAutocomplete, {
660-
getSources,
661-
});
662-
663-
// Typing 木 using the Wubihua input method
664-
// see:
665-
// - https://en.wikipedia.org/wiki/Stroke_count_method
666-
// - https://developer.mozilla.org/en-US/docs/Web/API/Element/compositionend_event
667-
const character = '木';
668-
const strokes = ['一', '丨', '丿', '丶', character];
669-
670-
strokes.forEach((stroke, index) => {
671-
const isFirst = index === 0;
672-
const isLast = index === strokes.length - 1;
673-
const query = isLast ? stroke : strokes.slice(0, index + 1).join('');
674-
675-
if (isFirst) {
676-
fireEvent.compositionStart(inputElement);
677-
}
678-
679-
fireEvent.compositionUpdate(inputElement, {
680-
data: query,
681-
});
682-
683-
fireEvent.input(inputElement, {
684-
isComposing: true,
685-
target: {
686-
value: query,
687-
},
688-
});
689-
690-
if (isLast) {
691-
fireEvent.compositionEnd(inputElement, {
692-
data: query,
693-
target: {
694-
value: query,
695-
},
696-
});
697-
}
698-
});
699-
700-
expect(inputElement).toHaveValue(character);
701-
expect(getSources).toHaveBeenCalledTimes(1);
702-
expect(getSources).toHaveBeenLastCalledWith(
703-
expect.objectContaining({
704-
query: character,
705-
})
706-
);
707-
});
708648
});
709649

710650
describe('onKeyDown', () => {
@@ -1973,76 +1913,6 @@ describe('getInputProps', () => {
19731913
);
19741914
});
19751915
});
1976-
1977-
test('stops process if IME is in progress', () => {
1978-
const onStateChange = jest.fn();
1979-
const { inputElement } = createPlayground(createAutocomplete, {
1980-
openOnFocus: true,
1981-
onStateChange,
1982-
initialState: {
1983-
collections: [
1984-
createCollection({
1985-
source: { sourceId: 'testSource' },
1986-
items: [
1987-
{ label: '1' },
1988-
{ label: '2' },
1989-
{ label: '3' },
1990-
{ label: '4' },
1991-
],
1992-
}),
1993-
],
1994-
},
1995-
});
1996-
1997-
inputElement.focus();
1998-
1999-
// 1. Pressing Arrow Down to select the first item
2000-
fireEvent.keyDown(inputElement, { key: 'ArrowDown' });
2001-
expect(onStateChange).toHaveBeenLastCalledWith(
2002-
expect.objectContaining({
2003-
state: expect.objectContaining({
2004-
activeItemId: 0,
2005-
}),
2006-
})
2007-
);
2008-
2009-
// 2. Typing かくてい with a Japanese IME
2010-
const strokes = ['か', 'く', 'て', 'い'];
2011-
strokes.forEach((_stroke, index) => {
2012-
const isFirst = index === 0;
2013-
const query = strokes.slice(0, index + 1).join('');
2014-
2015-
if (isFirst) {
2016-
fireEvent.compositionStart(inputElement);
2017-
}
2018-
2019-
fireEvent.compositionUpdate(inputElement, {
2020-
data: query,
2021-
});
2022-
2023-
fireEvent.input(inputElement, {
2024-
isComposing: true,
2025-
data: query,
2026-
target: {
2027-
value: query,
2028-
},
2029-
});
2030-
});
2031-
2032-
// 3. Selecting the 3rd suggestion on the IME window
2033-
fireEvent.keyDown(inputElement, { key: 'ArrowDown', isComposing: true });
2034-
fireEvent.keyDown(inputElement, { key: 'ArrowDown', isComposing: true });
2035-
fireEvent.keyDown(inputElement, { key: 'ArrowDown', isComposing: true });
2036-
2037-
// 4. Checking that activeItemId has not changed
2038-
expect(onStateChange).toHaveBeenLastCalledWith(
2039-
expect.objectContaining({
2040-
state: expect.objectContaining({
2041-
activeItemId: 0,
2042-
}),
2043-
})
2044-
);
2045-
});
20461916
});
20471917

20481918
describe('onFocus', () => {

packages/autocomplete-core/src/getPropGetters.ts

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import {
2121
getAutocompleteElementId,
2222
isOrContainsNode,
2323
isSamsung,
24-
getNativeEvent,
2524
} from './utils';
2625

2726
interface GetPropGettersOptions<TItem extends BaseItem>
@@ -220,25 +219,6 @@ export function getPropGetters<
220219
maxLength,
221220
type: 'search',
222221
onChange: (event) => {
223-
const value = (
224-
(event as unknown as Event).currentTarget as HTMLInputElement
225-
).value;
226-
227-
if (getNativeEvent(event as unknown as InputEvent).isComposing) {
228-
setters.setQuery(value);
229-
return;
230-
}
231-
232-
onInput({
233-
event,
234-
props,
235-
query: value.slice(0, maxLength),
236-
refresh,
237-
store,
238-
...setters,
239-
});
240-
},
241-
onCompositionEnd: (event) => {
242222
onInput({
243223
event,
244224
props,
@@ -251,10 +231,6 @@ export function getPropGetters<
251231
});
252232
},
253233
onKeyDown: (event) => {
254-
if (getNativeEvent(event as unknown as InputEvent).isComposing) {
255-
return;
256-
}
257-
258234
onKeyDown({
259235
event: event as unknown as KeyboardEvent,
260236
props,

packages/autocomplete-core/src/utils/getNativeEvent.ts

Lines changed: 0 additions & 3 deletions
This file was deleted.

packages/autocomplete-core/src/utils/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,3 @@ export * from './getAutocompleteElementId';
88
export * from './isOrContainsNode';
99
export * from './isSamsung';
1010
export * from './mapToAlgoliaResponse';
11-
export * from './getNativeEvent';

packages/autocomplete-js/src/utils/setProperties.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,6 @@ function getNormalizedName(name: string): string {
110110
switch (name) {
111111
case 'onChange':
112112
return 'onInput';
113-
// see: https://github.com/preactjs/preact/issues/1978
114-
case 'onCompositionEnd':
115-
return 'oncompositionend';
116113
default:
117114
return name;
118115
}

packages/autocomplete-shared/src/core/AutocompletePropGetters.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ export type GetInputProps<TEvent, TMouseEvent, TKeyboardEvent> = (props: {
8383
'aria-controls': string | undefined;
8484
'aria-labelledby': string;
8585
onChange(event: TEvent): void;
86-
onCompositionEnd(event: TEvent): void;
8786
onKeyDown(event: TKeyboardEvent): void;
8887
onFocus(event: TEvent): void;
8988
onBlur(): void;

test/utils/createPlayground.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ export function createPlayground<TItem extends Record<string, unknown>>(
2424
const formProps = autocomplete.getFormProps({ inputElement });
2525
inputElement.addEventListener('blur', inputProps.onBlur);
2626
inputElement.addEventListener('input', inputProps.onChange);
27-
inputElement.addEventListener('compositionend', inputProps.onCompositionEnd);
2827
inputElement.addEventListener('click', inputProps.onClick);
2928
inputElement.addEventListener('focus', inputProps.onFocus);
3029
inputElement.addEventListener('keydown', inputProps.onKeyDown);

0 commit comments

Comments
 (0)