in packages/element/src/editable/index.ts [196:265]
setup(props, { attrs, slots }) {
const fieldRef = useField<Field>()
const prefixCls = `${stylePrefix}-editable`
const visible = ref(false)
return () => {
const field = fieldRef.value
const pattern = getParentPattern(fieldRef)
return h(
Popover,
{
class: [prefixCls],
attrs: {
...attrs,
title: attrs.title || field.title,
value: visible.value,
trigger: 'click',
},
on: {
input: (value) => {
visible.value = value
},
},
},
{
default: () => [slots.default()],
reference: () =>
h(
FormBaseItem,
{ class: [`${prefixCls}-trigger`] },
{
default: () =>
h(
'div',
{
class: [`${prefixCls}-content`],
},
{
default: () => [
h(
'span',
{
class: [`${prefixCls}-preview`],
},
{
default: () => [attrs.title || field.title],
}
),
h(
'i',
{
class: [
`${prefixCls}-edit-btn`,
pattern === 'editable'
? 'el-icon-edit'
: 'el-icon-chat-dot-round',
],
},
{}
),
],
}
),
}
),
}
)
}
},