From 413c387c7cc13b8b0fe45a29a06512c8c2f1ddd6 Mon Sep 17 00:00:00 2001 From: Loris Date: Sat, 25 Jan 2020 18:45:23 +0100 Subject: [PATCH] Add onCancel callback to textWysiwyg for cleanup (#555) --- src/element/textWysiwyg.tsx | 4 ++++ src/index.tsx | 34 ++++++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/element/textWysiwyg.tsx b/src/element/textWysiwyg.tsx index 17b70019b..7e2cfa6f2 100644 --- a/src/element/textWysiwyg.tsx +++ b/src/element/textWysiwyg.tsx @@ -8,6 +8,7 @@ type TextWysiwygParams = { strokeColor: string; font: string; onSubmit: (text: string) => void; + onCancel: () => void; }; // When WYSIWYG text ends with white spaces, the text gets vertically misaligned @@ -23,6 +24,7 @@ export function textWysiwyg({ strokeColor, font, onSubmit, + onCancel, }: TextWysiwygParams) { // Using contenteditable here as it has dynamic width. // But this solution has an issue — it allows to paste @@ -84,6 +86,8 @@ export function textWysiwyg({ function handleSubmit() { if (editable.innerText) { onSubmit(trimText(editable.innerText)); + } else { + onCancel(); } cleanup(); } diff --git a/src/index.tsx b/src/index.tsx index 1dad59566..56acd9feb 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -875,6 +875,14 @@ export class App extends React.Component { } } + const resetSelection = () => { + this.setState({ + draggingElement: null, + editingElement: null, + elementType: "selection", + }); + }; + textWysiwyg({ initText: "", x: textX, @@ -895,11 +903,10 @@ export class App extends React.Component { }, ]; } - this.setState({ - draggingElement: null, - editingElement: null, - elementType: "selection", - }); + resetSelection(); + }, + onCancel: () => { + resetSelection(); }, }); this.setState({ @@ -1271,6 +1278,14 @@ export class App extends React.Component { } } + const resetSelection = () => { + this.setState({ + draggingElement: null, + editingElement: null, + elementType: "selection", + }); + }; + textWysiwyg({ initText: element.text, x: textX, @@ -1289,11 +1304,10 @@ export class App extends React.Component { }, ]; } - this.setState({ - draggingElement: null, - editingElement: null, - elementType: "selection", - }); + resetSelection(); + }, + onCancel: () => { + resetSelection(); }, }); }}