feat: 小功能建设(4) (#379)
This commit is contained in:
parent
681e8fa3ae
commit
517906f77f
@ -38,6 +38,7 @@ export default defineComponent({
|
|||||||
},
|
},
|
||||||
setup(props, { slots }) {
|
setup(props, { slots }) {
|
||||||
const status = ref('')
|
const status = ref('')
|
||||||
|
const moduleTitleRef = ref()
|
||||||
watch(
|
watch(
|
||||||
() => props.isSelected,
|
() => props.isSelected,
|
||||||
() => {
|
() => {
|
||||||
@ -45,11 +46,13 @@ export default defineComponent({
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
const handleClick = () => {
|
watch(status, (v) => {
|
||||||
if (props.isSelected) {
|
if (v === 'edit') {
|
||||||
status.value = 'edit'
|
document.addEventListener('click', handleDocumentClick)
|
||||||
|
} else {
|
||||||
|
document.removeEventListener('click', handleDocumentClick)
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
|
|
||||||
const typeName = computed(() => {
|
const typeName = computed(() => {
|
||||||
if (!props.showType) return ''
|
if (!props.showType) return ''
|
||||||
@ -84,13 +87,34 @@ export default defineComponent({
|
|||||||
return htmlText
|
return htmlText
|
||||||
})
|
})
|
||||||
|
|
||||||
return { slots, handleClick, status, tagTitle }
|
function handleClick(e) {
|
||||||
|
if (props.isSelected && status.value === 'preview') {
|
||||||
|
e.stopPropagation()
|
||||||
|
status.value = 'edit'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleDocumentClick(e) {
|
||||||
|
const richEditorDOM = moduleTitleRef.value.querySelector('.rich-editor')
|
||||||
|
const isClickRichEditor = richEditorDOM?.contains(e.target)
|
||||||
|
|
||||||
|
if (status.value === 'edit' && richEditorDOM && !isClickRichEditor) {
|
||||||
|
// 监听编辑状态时点击非编辑区域
|
||||||
|
status.value = 'preview'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return { slots, handleClick, status, tagTitle, moduleTitleRef }
|
||||||
},
|
},
|
||||||
render() {
|
render() {
|
||||||
const { isRequired, indexNumber, slots, status, tagTitle } = this
|
const { isRequired, indexNumber, slots, status, tagTitle } = this
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class={['module-title', isRequired ? 'is-required' : '']} onClick={this.handleClick}>
|
<div
|
||||||
|
ref="moduleTitleRef"
|
||||||
|
class={['module-title', isRequired ? 'is-required' : '']}
|
||||||
|
onClick={this.handleClick}
|
||||||
|
>
|
||||||
{isRequired && <i class="module-title-required">*</i>}
|
{isRequired && <i class="module-title-required">*</i>}
|
||||||
<div class="module-content">
|
<div class="module-content">
|
||||||
{this.showIndex && <span class="index"> {indexNumber}.</span>}
|
{this.showIndex && <span class="index"> {indexNumber}.</span>}
|
||||||
|
Loading…
Reference in New Issue
Block a user