diff --git a/src/field/Field.tsx b/src/field/Field.tsx
index 38112ce66..beef4b1b3 100644
--- a/src/field/Field.tsx
+++ b/src/field/Field.tsx
@@ -386,14 +386,18 @@ export default defineComponent({
};
const renderInput = () => {
- const inputAlign = getProp('inputAlign');
+ const controlClass = bem('control', [
+ getProp('inputAlign'),
+ {
+ error: showError.value,
+ custom: !!slots.input,
+ 'min-height': props.type === 'textarea' && !props.autosize,
+ },
+ ]);
if (slots.input) {
return (
-
+
{slots.input()}
);
@@ -403,7 +407,7 @@ export default defineComponent({
ref: inputRef,
name: props.name,
rows: props.rows !== undefined ? +props.rows : undefined,
- class: bem('control', inputAlign),
+ class: controlClass,
value: props.modelValue,
disabled: getProp('disabled'),
readonly: getProp('readonly'),
@@ -559,10 +563,8 @@ export default defineComponent({
size={props.size}
icon={props.leftIcon}
class={bem({
- error: showError.value,
disabled,
[`label-${labelAlign}`]: labelAlign,
- 'min-height': props.type === 'textarea' && !props.autosize,
})}
center={props.center}
border={props.border}
diff --git a/src/field/index.less b/src/field/index.less
index 5d126a114..078d8eea5 100644
--- a/src/field/index.less
+++ b/src/field/index.less
@@ -111,6 +111,16 @@
min-height: var(--van-cell-line-height);
}
+ &--error,
+ &--error::placeholder {
+ color: var(--van-field-input-error-text-color);
+ -webkit-text-fill-color: currentColor;
+ }
+
+ &--min-height {
+ min-height: var(--van-field-text-area-min-height);
+ }
+
// for ios wechat
&[type='date'],
&[type='time'],
@@ -184,20 +194,4 @@
line-height: var(--van-field-word-limit-line-height);
text-align: right;
}
-
- &--error {
- .van-field__control {
- &,
- &::placeholder {
- color: var(--van-field-input-error-text-color);
- -webkit-text-fill-color: currentColor;
- }
- }
- }
-
- &--min-height {
- .van-field__control {
- min-height: var(--van-field-text-area-min-height);
- }
- }
}
diff --git a/src/field/test/__snapshots__/demo.spec.ts.snap b/src/field/test/__snapshots__/demo.spec.ts.snap
index b9702d413..0468dc03e 100644
--- a/src/field/test/__snapshots__/demo.spec.ts.snap
+++ b/src/field/test/__snapshots__/demo.spec.ts.snap
@@ -183,7 +183,7 @@ exports[`should render demo and match snapshot 1`] = `