From 2cddf596066552c025c9324ee33caab67e0a2b29 Mon Sep 17 00:00:00 2001 From: Oleg Isonen Date: Tue, 5 Jul 2022 20:24:08 +0200 Subject: [PATCH] prevent editing text inside of a component that is not text editable --- app/canvas/shared/use-shortcuts.ts | 3 +++ app/canvas/shared/use-track-selected-element.ts | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/canvas/shared/use-shortcuts.ts b/app/canvas/shared/use-shortcuts.ts index 35cc52d80d..3dda3eb38b 100644 --- a/app/canvas/shared/use-shortcuts.ts +++ b/app/canvas/shared/use-shortcuts.ts @@ -8,6 +8,7 @@ import { useRootInstance, useTextEditingInstanceId, } from "~/shared/nano-states"; +import { primitives } from "~/shared/canvas-components"; const inputTags = ["INPUT", "SELECT", "TEXTAREA"] as const; @@ -99,6 +100,8 @@ export const useShortcuts = () => { "enter", (event) => { if (selectedInstance === undefined) return; + const { isContentEditable } = primitives[selectedInstance.component]; + if (isContentEditable === false) return; // Prevents inserting a newline when entering text-editing mode event.preventDefault(); setEditingInstanceId(selectedInstance.id); diff --git a/app/canvas/shared/use-track-selected-element.ts b/app/canvas/shared/use-track-selected-element.ts index 15529e9b5f..036b7acbbf 100644 --- a/app/canvas/shared/use-track-selected-element.ts +++ b/app/canvas/shared/use-track-selected-element.ts @@ -86,7 +86,12 @@ export const useTrackSelectedElement = () => { if (component === undefined || component in primitives === false) { return; } - const { isInlineOnly } = primitives[component]; + const { isInlineOnly, isContentEditable } = primitives[component]; + + if (isContentEditable === false) { + return; + } + // When user double clicks on an inline instance, we need to select the parent instance and put it indo text editing mode. // Inline instances are not directly, only through parent instance. if (isInlineOnly) {