Add onCancel callback to textWysiwyg for cleanup (#555)
This commit is contained in:
parent
829e827dcf
commit
413c387c7c
@ -8,6 +8,7 @@ type TextWysiwygParams = {
|
|||||||
strokeColor: string;
|
strokeColor: string;
|
||||||
font: string;
|
font: string;
|
||||||
onSubmit: (text: string) => void;
|
onSubmit: (text: string) => void;
|
||||||
|
onCancel: () => void;
|
||||||
};
|
};
|
||||||
|
|
||||||
// When WYSIWYG text ends with white spaces, the text gets vertically misaligned
|
// When WYSIWYG text ends with white spaces, the text gets vertically misaligned
|
||||||
@ -23,6 +24,7 @@ export function textWysiwyg({
|
|||||||
strokeColor,
|
strokeColor,
|
||||||
font,
|
font,
|
||||||
onSubmit,
|
onSubmit,
|
||||||
|
onCancel,
|
||||||
}: TextWysiwygParams) {
|
}: TextWysiwygParams) {
|
||||||
// Using contenteditable here as it has dynamic width.
|
// Using contenteditable here as it has dynamic width.
|
||||||
// But this solution has an issue — it allows to paste
|
// But this solution has an issue — it allows to paste
|
||||||
@ -84,6 +86,8 @@ export function textWysiwyg({
|
|||||||
function handleSubmit() {
|
function handleSubmit() {
|
||||||
if (editable.innerText) {
|
if (editable.innerText) {
|
||||||
onSubmit(trimText(editable.innerText));
|
onSubmit(trimText(editable.innerText));
|
||||||
|
} else {
|
||||||
|
onCancel();
|
||||||
}
|
}
|
||||||
cleanup();
|
cleanup();
|
||||||
}
|
}
|
||||||
|
@ -875,6 +875,14 @@ export class App extends React.Component<any, AppState> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const resetSelection = () => {
|
||||||
|
this.setState({
|
||||||
|
draggingElement: null,
|
||||||
|
editingElement: null,
|
||||||
|
elementType: "selection",
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
textWysiwyg({
|
textWysiwyg({
|
||||||
initText: "",
|
initText: "",
|
||||||
x: textX,
|
x: textX,
|
||||||
@ -895,11 +903,10 @@ export class App extends React.Component<any, AppState> {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
this.setState({
|
resetSelection();
|
||||||
draggingElement: null,
|
},
|
||||||
editingElement: null,
|
onCancel: () => {
|
||||||
elementType: "selection",
|
resetSelection();
|
||||||
});
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
this.setState({
|
this.setState({
|
||||||
@ -1271,6 +1278,14 @@ export class App extends React.Component<any, AppState> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const resetSelection = () => {
|
||||||
|
this.setState({
|
||||||
|
draggingElement: null,
|
||||||
|
editingElement: null,
|
||||||
|
elementType: "selection",
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
textWysiwyg({
|
textWysiwyg({
|
||||||
initText: element.text,
|
initText: element.text,
|
||||||
x: textX,
|
x: textX,
|
||||||
@ -1289,11 +1304,10 @@ export class App extends React.Component<any, AppState> {
|
|||||||
},
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
this.setState({
|
resetSelection();
|
||||||
draggingElement: null,
|
},
|
||||||
editingElement: null,
|
onCancel: () => {
|
||||||
elementType: "selection",
|
resetSelection();
|
||||||
});
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user