Skip to content

Commit 5543ce6

Browse files
committed
refactor: input
1 parent 7ec6831 commit 5543ce6

16 files changed

+800
-481
lines changed

components/input/ClearableLabeledInput.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export default defineComponent({
3939
addonAfter: PropTypes.any,
4040
readonly: PropTypes.looseBool,
4141
focused: PropTypes.looseBool,
42-
bordered: PropTypes.looseBool,
42+
bordered: PropTypes.looseBool.def(true),
4343
triggerFocus: { type: Function as PropType<() => void> },
4444
},
4545
setup(props, { slots, attrs }) {
@@ -51,7 +51,7 @@ export default defineComponent({
5151
}
5252
};
5353
const renderClearIcon = (prefixCls: string) => {
54-
const { allowClear, value, disabled, readonly, handleReset } = props;
54+
const { allowClear, value, disabled, readonly, handleReset, suffix = slots.suffix } = props;
5555
if (!allowClear) {
5656
return null;
5757
}
@@ -60,9 +60,12 @@ export default defineComponent({
6060
return (
6161
<CloseCircleFilled
6262
onClick={handleReset}
63+
// Do not trigger onBlur when clear input
64+
onMousedown={e => e.preventDefault()}
6365
class={classNames(
6466
{
6567
[`${className}-hidden`]: !needClear,
68+
[`${className}-has-suffix`]: !!suffix,
6669
},
6770
className,
6871
)}

components/input/Group.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ export default defineComponent({
2929
};
3030
});
3131
return () => {
32-
const {} = props;
3332
return (
3433
<span
3534
class={cls.value}

components/input/Input.tsx

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import { useInjectFormItemContext } from '../form/FormItemContext';
1919
import omit from '../_util/omit';
2020
import useConfigInject from '../_util/hooks/useConfigInject';
2121
import type { ChangeEvent, FocusEventHandler } from '../_util/EventInterface';
22-
import { controlDefaultValue } from '../_util/util';
2322

2423
export function fixControlledValue(value: string | number) {
2524
if (typeof value === 'undefined' || value === null) {
@@ -134,13 +133,21 @@ export default defineComponent({
134133
let removePasswordTimeout: any;
135134
const formItemContext = useInjectFormItemContext();
136135
const { direction, prefixCls, size, autocomplete } = useConfigInject('input', props);
137-
const stateValue = ref(props.value === controlDefaultValue ? props.defaultValue : props.value);
136+
const stateValue = ref(props.value === undefined ? props.defaultValue : props.value);
138137
const focused = ref(false);
139138

140139
watch(
141140
() => props.value,
142141
() => {
143-
if (props.value !== controlDefaultValue) {
142+
if (props.value !== undefined) {
143+
stateValue.value = props.value;
144+
}
145+
},
146+
);
147+
watch(
148+
() => props.disabled,
149+
() => {
150+
if (props.value !== undefined) {
144151
stateValue.value = props.value;
145152
}
146153
},
@@ -181,7 +188,7 @@ export default defineComponent({
181188
expose({
182189
focus,
183190
blur,
184-
inputRef,
191+
input: inputRef,
185192
stateValue,
186193
setSelectionRange,
187194
select,
@@ -217,7 +224,7 @@ export default defineComponent({
217224
if (stateValue.value === value) {
218225
return;
219226
}
220-
if (props.value === controlDefaultValue) {
227+
if (props.value === undefined) {
221228
stateValue.value = value;
222229
} else {
223230
instance.update();
@@ -234,9 +241,10 @@ export default defineComponent({
234241
};
235242

236243
const handleChange = (e: ChangeEvent) => {
237-
const { value, composing, isComposing } = e.target as any;
244+
const { value, composing } = e.target as any;
238245
// https://github.com/vueComponent/ant-design-vue/issues/2203
239-
if (((isComposing || composing) && props.lazy) || stateValue.value === value) return;
246+
if ((((e as any).isComposing || composing) && props.lazy) || stateValue.value === value)
247+
return;
240248
const newVal = e.target.value;
241249
resolveOnChange(inputRef.value, e, triggerChange);
242250
setValue(newVal, () => {
@@ -270,6 +278,7 @@ export default defineComponent({
270278
disabled,
271279
bordered = true,
272280
valueModifiers = {},
281+
htmlSize,
273282
} = props;
274283
const otherProps = omit(props as InputProps & { inputType: any; placeholder: string }, [
275284
'prefixCls',
@@ -285,9 +294,11 @@ export default defineComponent({
285294
'size',
286295
'inputType',
287296
'bordered',
297+
'htmlSize',
288298
]);
289299
const inputProps = {
290300
...otherProps,
301+
...attrs,
291302
autocomplete: autocomplete.value,
292303
onChange: handleChange,
293304
onInput: handleChange,
@@ -302,6 +313,7 @@ export default defineComponent({
302313
),
303314
ref: inputRef,
304315
key: 'ant-input',
316+
size: htmlSize,
305317
};
306318
if (valueModifiers.lazy) {
307319
delete inputProps.onInput;
@@ -321,7 +333,7 @@ export default defineComponent({
321333
inputType: 'input',
322334
value: fixControlledValue(stateValue.value),
323335
handleReset,
324-
focused: focused.value,
336+
focused: focused.value && props.disabled,
325337
};
326338

327339
return (

0 commit comments

Comments
 (0)