fix: typography editing error, close #5743
parent
bddf64e0ad
commit
39ac6ed89e
|
@ -30,6 +30,7 @@ import useConfigInject from '../_util/hooks/useConfigInject';
|
|||
import type { EventHandler } from '../_util/EventInterface';
|
||||
import omit from '../_util/omit';
|
||||
import type { AutoSizeType } from '../input/inputProps';
|
||||
import useMergedState from '../_util/hooks/useMergedState';
|
||||
|
||||
export type BaseType = 'secondary' | 'success' | 'warning' | 'danger';
|
||||
|
||||
|
@ -130,7 +131,6 @@ const Base = defineComponent({
|
|||
const { prefixCls, direction } = useConfigInject('typography', props);
|
||||
|
||||
const state = reactive({
|
||||
edit: false,
|
||||
copied: false,
|
||||
ellipsisText: '',
|
||||
ellipsisContent: null,
|
||||
|
@ -256,29 +256,39 @@ const Base = defineComponent({
|
|||
}, 3000);
|
||||
});
|
||||
}
|
||||
|
||||
const editable = computed(() => {
|
||||
const editable = props.editable;
|
||||
if (!editable) return { editing: state.edit };
|
||||
if (!editable) return { editing: false };
|
||||
|
||||
return {
|
||||
editing: state.edit,
|
||||
...(typeof editable === 'object' ? editable : null),
|
||||
};
|
||||
});
|
||||
|
||||
const [editing, setEditing] = useMergedState(false, {
|
||||
value: computed(() => {
|
||||
return editable.value.editing;
|
||||
}),
|
||||
});
|
||||
|
||||
function triggerEdit(edit: boolean) {
|
||||
const { onStart } = editable.value;
|
||||
if (edit && onStart) {
|
||||
onStart();
|
||||
}
|
||||
|
||||
state.edit = edit;
|
||||
nextTick(() => {
|
||||
if (!edit) {
|
||||
setEditing(edit);
|
||||
}
|
||||
watch(
|
||||
editing,
|
||||
val => {
|
||||
if (!val) {
|
||||
editIcon.value?.focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
{ flush: 'post' },
|
||||
);
|
||||
|
||||
// ============== Ellipsis ==============
|
||||
function resizeOnNextFrame() {
|
||||
|
@ -467,7 +477,7 @@ const Base = defineComponent({
|
|||
}
|
||||
|
||||
return () => {
|
||||
const { editing, triggerType = ['icon'] } = editable.value;
|
||||
const { triggerType = ['icon'] } = editable.value;
|
||||
const children =
|
||||
props.ellipsis || props.editable
|
||||
? props.content !== undefined
|
||||
|
@ -477,7 +487,7 @@ const Base = defineComponent({
|
|||
? slots.default()
|
||||
: props.content;
|
||||
|
||||
if (editing) {
|
||||
if (editing.value) {
|
||||
return renderEditInput();
|
||||
}
|
||||
return (
|
||||
|
|
Loading…
Reference in New Issue