Skip to content

Commit 6730f6a

Browse files
committed
refactor(CFormControlWrapper): optimise duplicated code
1 parent f880027 commit 6730f6a

File tree

1 file changed

+26
-44
lines changed

1 file changed

+26
-44
lines changed

packages/coreui-vue/src/components/form/CFormControlWrapper.ts

Lines changed: 26 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,30 @@ const CFormControlWrapper = defineComponent({
4141
},
4242
},
4343
setup(props, { slots }) {
44+
const formControlValidation = () =>
45+
h(
46+
CFormControlValidation,
47+
{
48+
describedby: props.describedby,
49+
feedback: props.feedback,
50+
feedbackInvalid: props.feedbackInvalid,
51+
feedbackValid: props.feedbackValid,
52+
floatingLabel: props.floatingLabel,
53+
invalid: props.invalid,
54+
tooltipFeedback: props.tooltipFeedback,
55+
valid: props.valid,
56+
},
57+
{
58+
...(slots.feedback && { feedback: () => slots.feedback && slots.feedback() }),
59+
...(slots.feedbackInvalid && {
60+
feedbackInvalid: () => slots.feedbackInvalid && slots.feedbackInvalid(),
61+
}),
62+
...(slots.feedbackValid && {
63+
feedbackValid: () => slots.feedbackInvalid && slots.feedbackInvalid(),
64+
}),
65+
},
66+
)
67+
4468
return () =>
4569
props.floatingLabel
4670
? h(CFormFloating, () => [
@@ -64,28 +88,7 @@ const CFormControlWrapper = defineComponent({
6488
default: () => (slots.text && slots.text()) || props.text,
6589
},
6690
),
67-
h(
68-
CFormControlValidation,
69-
{
70-
describedby: props.describedby,
71-
feedback: props.feedback,
72-
feedbackInvalid: props.feedbackInvalid,
73-
feedbackValid: props.feedbackValid,
74-
floatingLabel: props.floatingLabel,
75-
invalid: props.invalid,
76-
tooltipFeedback: props.tooltipFeedback,
77-
valid: props.valid,
78-
},
79-
{
80-
...(slots.feedback && { feedback: () => slots.feedback && slots.feedback() }),
81-
...(slots.feedbackInvalid && {
82-
feedbackInvalid: () => slots.feedbackInvalid && slots.feedbackInvalid(),
83-
}),
84-
...(slots.feedbackValid && {
85-
feedbackValid: () => slots.feedbackInvalid && slots.feedbackInvalid(),
86-
}),
87-
},
88-
),
91+
formControlValidation(),
8992
])
9093
: [
9194
(props.label || slots.label) &&
@@ -109,28 +112,7 @@ const CFormControlWrapper = defineComponent({
109112
default: () => (slots.text && slots.text()) || props.text,
110113
},
111114
),
112-
h(
113-
CFormControlValidation,
114-
{
115-
describedby: props.describedby,
116-
feedback: props.feedback,
117-
feedbackInvalid: props.feedbackInvalid,
118-
feedbackValid: props.feedbackValid,
119-
floatingLabel: props.floatingLabel,
120-
invalid: props.invalid,
121-
tooltipFeedback: props.tooltipFeedback,
122-
valid: props.valid,
123-
},
124-
{
125-
...(slots.feedback && { feedback: () => slots.feedback && slots.feedback() }),
126-
...(slots.feedbackInvalid && {
127-
feedbackInvalid: () => slots.feedbackInvalid && slots.feedbackInvalid(),
128-
}),
129-
...(slots.feedbackValid && {
130-
feedbackValid: () => slots.feedbackInvalid && slots.feedbackInvalid(),
131-
}),
132-
},
133-
),
115+
formControlValidation(),
134116
]
135117
},
136118
})

0 commit comments

Comments
 (0)