mirror of
https://github.com/element-plus/element-plus.git
synced 2026-03-13 07:51:17 +08:00
fix(components): [form-item] don't add required rule repeatedly (#9618)
This commit is contained in:
@@ -177,8 +177,14 @@ const fieldValue = computed(() => {
|
||||
return getProp(model, props.prop).value
|
||||
})
|
||||
|
||||
const _rules = computed(() => {
|
||||
const rules: FormItemRule[] = props.rules ? ensureArray(props.rules) : []
|
||||
const normalizedRules = computed(() => {
|
||||
const { required } = props
|
||||
|
||||
const rules: FormItemRule[] = []
|
||||
|
||||
if (props.rules) {
|
||||
rules.push(...ensureArray(props.rules))
|
||||
}
|
||||
|
||||
const formRules = formContext?.rules
|
||||
if (formRules && props.prop) {
|
||||
@@ -191,17 +197,28 @@ const _rules = computed(() => {
|
||||
}
|
||||
}
|
||||
|
||||
if (props.required !== undefined) {
|
||||
rules.push({ required: !!props.required })
|
||||
if (required !== undefined) {
|
||||
const requiredRules = rules
|
||||
.map((rule, i) => [rule, i] as const)
|
||||
.filter(([rule]) => Object.keys(rule).includes('required'))
|
||||
|
||||
if (requiredRules.length > 0) {
|
||||
for (const [rule, i] of requiredRules) {
|
||||
if (rule.required === required) continue
|
||||
rules[i] = { ...rule, required }
|
||||
}
|
||||
} else {
|
||||
rules.push({ required })
|
||||
}
|
||||
}
|
||||
|
||||
return rules
|
||||
})
|
||||
|
||||
const validateEnabled = computed(() => _rules.value.length > 0)
|
||||
const validateEnabled = computed(() => normalizedRules.value.length > 0)
|
||||
|
||||
const getFilteredRule = (trigger: string) => {
|
||||
const rules = _rules.value
|
||||
const rules = normalizedRules.value
|
||||
return (
|
||||
rules
|
||||
.filter((rule) => {
|
||||
@@ -219,7 +236,7 @@ const getFilteredRule = (trigger: string) => {
|
||||
}
|
||||
|
||||
const isRequired = computed(() =>
|
||||
_rules.value.some((rule) => rule.required === true)
|
||||
normalizedRules.value.some((rule) => rule.required)
|
||||
)
|
||||
|
||||
const shouldShowError = computed(
|
||||
|
||||
Reference in New Issue
Block a user