|
@@ -344,12 +344,18 @@ export class App extends React.Component<{}, AppState> {
|
|
|
};
|
|
|
|
|
|
private renderSelectedShapeActions(elements: readonly ExcalidrawElement[]) {
|
|
|
- const { elementType } = this.state;
|
|
|
+ const { elementType, editingElement } = this.state;
|
|
|
const selectedElements = elements.filter(el => el.isSelected);
|
|
|
const hasSelectedElements = selectedElements.length > 0;
|
|
|
const isTextToolSelected = elementType === "text";
|
|
|
const isShapeToolSelected = elementType !== "selection";
|
|
|
- if (!(hasSelectedElements || isShapeToolSelected || isTextToolSelected)) {
|
|
|
+ const isEditingText = editingElement && editingElement.type === "text";
|
|
|
+ if (
|
|
|
+ !hasSelectedElements &&
|
|
|
+ !isShapeToolSelected &&
|
|
|
+ !isTextToolSelected &&
|
|
|
+ !isEditingText
|
|
|
+ ) {
|
|
|
return null;
|
|
|
}
|
|
|
|
|
@@ -403,7 +409,7 @@ export class App extends React.Component<{}, AppState> {
|
|
|
</>
|
|
|
)}
|
|
|
|
|
|
- {(hasText(elements) || isTextToolSelected) && (
|
|
|
+ {(hasText(elements) || isTextToolSelected || isEditingText) && (
|
|
|
<>
|
|
|
{this.actionManager.renderAction(
|
|
|
"changeFontSize",
|
|
@@ -800,11 +806,15 @@ export class App extends React.Component<{}, AppState> {
|
|
|
elements = [...elements, { ...element, isSelected: true }];
|
|
|
this.setState({
|
|
|
draggingElement: null,
|
|
|
+ editingElement: null,
|
|
|
elementType: "selection"
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
- this.setState({ elementType: "selection" });
|
|
|
+ this.setState({
|
|
|
+ elementType: "selection",
|
|
|
+ editingElement: element
|
|
|
+ });
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -1095,6 +1105,8 @@ export class App extends React.Component<{}, AppState> {
|
|
|
100
|
|
|
) as ExcalidrawTextElement;
|
|
|
|
|
|
+ this.setState({ editingElement: element });
|
|
|
+
|
|
|
let initText = "";
|
|
|
let textX = e.clientX;
|
|
|
let textY = e.clientY;
|
|
@@ -1149,6 +1161,7 @@ export class App extends React.Component<{}, AppState> {
|
|
|
elements = [...elements, { ...element, isSelected: true }];
|
|
|
this.setState({
|
|
|
draggingElement: null,
|
|
|
+ editingElement: null,
|
|
|
elementType: "selection"
|
|
|
});
|
|
|
}
|