@@ -30,7 +30,13 @@ export default defineComponent({
30
30
const colonless = computed ( ( ) => props . colonless ?? formProps ?. colonless ?? config ?. colonless )
31
31
const labelAlign = computed ( ( ) => props . labelAlign ?? formProps ?. labelAlign ?? config ?. labelAlign )
32
32
const labelColConfig = computed ( ( ) => normalizeColConfig ( props . labelCol ?? formProps ?. labelCol ) )
33
+ const labelTooltipIcon = computed (
34
+ ( ) => props . labelTooltipIcon ?? formProps ?. labelTooltipIcon ?? config ?. labelTooltipIcon ,
35
+ )
33
36
const controlColConfig = computed ( ( ) => normalizeColConfig ( props . controlCol ?? formProps ?. controlCol ) )
37
+ const controlTooltipIcon = computed (
38
+ ( ) => props . controlTooltipIcon ?? formProps ?. controlTooltipIcon ?? config ?. controlTooltipIcon ,
39
+ )
34
40
const { status, statusIcon, message } = useFormItem ( props , formProps )
35
41
36
42
const classes = computed ( ( ) => {
@@ -58,8 +64,8 @@ export default defineComponent({
58
64
const prefixCls = mergedPrefixCls . value
59
65
return (
60
66
< IxRow class = { classes . value } >
61
- { renderLabel ( props , slots , labelClasses , labelColConfig , prefixCls ) }
62
- { renderControl ( props , slots , controlColConfig , statusIcon , message , prefixCls ) }
67
+ { renderLabel ( props , slots , labelClasses , labelColConfig , labelTooltipIcon , prefixCls ) }
68
+ { renderControl ( props , slots , controlColConfig , controlTooltipIcon , statusIcon , message , prefixCls ) }
63
69
</ IxRow >
64
70
)
65
71
}
@@ -75,14 +81,15 @@ function renderLabel(
75
81
slots : Slots ,
76
82
classes : ComputedRef < string > ,
77
83
labelColConfig : ComputedRef < ColProps | undefined > ,
84
+ labelTooltipIcon : ComputedRef < string | undefined > ,
78
85
prefixCls : string ,
79
86
) {
80
87
const { label, labelFor, labelTooltip } = props
81
88
const { label : labelSlot , labelTooltip : labelTooltipSlot } = slots
82
89
if ( ! ( label || labelSlot ) ) {
83
90
return undefined
84
91
}
85
- const tooltipNode = renderTooltip ( labelTooltipSlot , labelTooltip )
92
+ const tooltipNode = renderTooltip ( labelTooltipSlot , labelTooltip , labelTooltipIcon . value )
86
93
return (
87
94
< IxCol class = { classes . value } { ...labelColConfig . value } >
88
95
< label for = { labelFor } >
@@ -97,12 +104,13 @@ function renderControl(
97
104
props : FormItemProps ,
98
105
slots : Slots ,
99
106
controlColConfig : ComputedRef < ColProps | undefined > ,
107
+ controlTooltipIcon : ComputedRef < string | undefined > ,
100
108
statusIcon : ComputedRef < string | undefined > ,
101
109
message : ComputedRef < string | undefined > ,
102
110
prefixCls : string ,
103
111
) {
104
- const { extra, extraMessage } = props
105
- const { extra : extraSlot , extraMessage : extraMessageSlot } = slots
112
+ const { controlTooltip , extra, extraMessage } = props
113
+ const { controlTooltip : controlTooltipSlot , extra : extraSlot , extraMessage : extraMessageSlot } = slots
106
114
if ( __DEV__ && ( extra || extraSlot ) ) {
107
115
Logger . warn ( 'components/form' , '`extra` was deprecated, please use `extraMessage` instead.' )
108
116
}
@@ -114,26 +122,28 @@ function renderControl(
114
122
const messageNode = message . value && < div class = { `${ prefixCls } -message` } > { message . value } </ div >
115
123
const extraNode = extraSlot ? extraSlot ( ) : extraMessageSlot ? extraMessageSlot ( ) : extra || extraMessage
116
124
const extraWrapper = extraNode && < div class = { `${ prefixCls } -extra-message` } > { extraNode } </ div >
125
+ const tooltipNode = renderTooltip ( controlTooltipSlot , controlTooltip , controlTooltipIcon . value )
117
126
return (
118
127
< IxCol class = { `${ prefixCls } -control` } { ...controlColConfig . value } >
119
128
< div class = { `${ prefixCls } -control-input` } >
120
129
< div class = { `${ prefixCls } -control-input-content` } > { slots . default && slots . default ( ) } </ div >
121
130
{ statusNode }
131
+ { tooltipNode && < span class = { `${ prefixCls } -control-tooltip` } > { tooltipNode } </ span > }
122
132
</ div >
123
133
{ messageNode }
124
134
{ extraWrapper }
125
135
</ IxCol >
126
136
)
127
137
}
128
138
129
- function renderTooltip ( slot : Slot | undefined , tooltip : string | undefined ) {
139
+ function renderTooltip ( slot : Slot | undefined , tooltip : string | undefined , iconName : string | undefined ) {
130
140
if ( slot ) {
131
141
return slot ( )
132
142
}
133
143
return (
134
144
tooltip && (
135
145
< IxTooltip title = { tooltip } >
136
- < IxIcon name = "question-circle" />
146
+ < IxIcon name = { iconName } />
137
147
</ IxTooltip >
138
148
)
139
149
)
0 commit comments