|
11 | 11 | */ |
12 | 12 |
|
13 | 13 | import {AriaTextFieldProps} from '@react-types/textfield'; |
14 | | -import {chain, filterDOMProps, getOwnerWindow, mergeProps, useFormReset} from '@react-aria/utils'; |
15 | 14 | import {DOMAttributes, ValidationResult} from '@react-types/shared'; |
| 15 | +import {filterDOMProps, getOwnerWindow, mergeProps, useFormReset} from '@react-aria/utils'; |
16 | 16 | import React, { |
17 | 17 | ChangeEvent, |
18 | 18 | HTMLAttributes, |
19 | 19 | type JSX, |
20 | 20 | LabelHTMLAttributes, |
21 | 21 | RefObject, |
22 | | - useCallback, |
23 | 22 | useEffect, |
24 | | - useRef, |
25 | 23 | useState |
26 | 24 | } from 'react'; |
27 | 25 | import {useControlledState} from '@react-stately/utils'; |
@@ -124,20 +122,9 @@ export function useTextField<T extends TextFieldIntrinsicElements = DefaultEleme |
124 | 122 | isRequired = false, |
125 | 123 | isReadOnly = false, |
126 | 124 | type = 'text', |
127 | | - validationBehavior = 'aria', |
128 | | - onChange: onChangeProp |
| 125 | + validationBehavior = 'aria' |
129 | 126 | } = props; |
130 | | - |
131 | | - let isComposing = useRef(false); |
132 | | - let onChange = useCallback((val) => { |
133 | | - if (isComposing.current) { |
134 | | - return; |
135 | | - } |
136 | | - |
137 | | - onChangeProp?.(val); |
138 | | - }, [onChangeProp]); |
139 | | - |
140 | | - let [value, setValue] = useControlledState<string>(props.value, props.defaultValue || '', onChange); |
| 127 | + let [value, setValue] = useControlledState<string>(props.value, props.defaultValue || '', props.onChange); |
141 | 128 | let {focusableProps} = useFocusable<TextFieldHTMLElementType[T]>(props, ref); |
142 | 129 | let validationState = useFormValidationState({ |
143 | 130 | ...props, |
@@ -178,17 +165,6 @@ export function useTextField<T extends TextFieldIntrinsicElements = DefaultEleme |
178 | 165 | } |
179 | 166 | }, [ref]); |
180 | 167 |
|
181 | | - let onCompositionStart = useCallback(() => { |
182 | | - isComposing.current = true; |
183 | | - }, []); |
184 | | - |
185 | | - let onCompositionEnd = useCallback((e) => { |
186 | | - isComposing.current = false; |
187 | | - if (e.data !== '') { |
188 | | - onChangeProp?.(value); |
189 | | - } |
190 | | - }, [onChangeProp, value]); |
191 | | - |
192 | 168 | return { |
193 | 169 | labelProps, |
194 | 170 | inputProps: mergeProps( |
@@ -225,8 +201,8 @@ export function useTextField<T extends TextFieldIntrinsicElements = DefaultEleme |
225 | 201 | onPaste: props.onPaste, |
226 | 202 |
|
227 | 203 | // Composition events |
228 | | - onCompositionEnd: chain(onCompositionEnd, props.onCompositionEnd), |
229 | | - onCompositionStart: chain(onCompositionStart, props.onCompositionStart), |
| 204 | + onCompositionEnd: props.onCompositionEnd, |
| 205 | + onCompositionStart: props.onCompositionStart, |
230 | 206 | onCompositionUpdate: props.onCompositionUpdate, |
231 | 207 |
|
232 | 208 | // Selection events |
|
0 commit comments