From 67b446134bc358a0c0238120d70c8f77cc9d7ea7 Mon Sep 17 00:00:00 2001 From: Twyco Date: Sat, 18 Jul 2026 21:43:46 +0200 Subject: [PATCH] Fix acceptance criteria keyboard editing --- .../projects/AcceptanceCriteriaEditor.vue | 41 ++++++++++++++----- resources/js/pages/projects/Ticket.vue | 3 -- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/resources/js/components/projects/AcceptanceCriteriaEditor.vue b/resources/js/components/projects/AcceptanceCriteriaEditor.vue index 38a8d58..a28847c 100644 --- a/resources/js/components/projects/AcceptanceCriteriaEditor.vue +++ b/resources/js/components/projects/AcceptanceCriteriaEditor.vue @@ -115,8 +115,14 @@ const rememberText = (index: number): void => { const commitText = (index: number): void => { if (skippedBlurIndex.value === index) { skippedBlurIndex.value = null; - editingIndex.value = null; - originalText.value = null; + + if (editingIndex.value === index) { + editingIndex.value = null; + } + + if (originalText.value?.index === index) { + originalText.value = null; + } return; } @@ -200,9 +206,10 @@ const insertAfterCurrent = (index: number, event: KeyboardEvent): void => { const result = addAcceptanceCriterionAfter(committedItems, index); originalText.value = null; + skippedBlurIndex.value = index; emitUpdate(result.items); - emit('commit', { items: committedItems, source: 'text' }); focusRow(result.index); + emit('commit', { items: committedItems, source: 'text' }); }; const toggleCriterion = (index: number, event: Event): void => { @@ -223,17 +230,29 @@ const toggleCriterion = (index: number, event: Event): void => { }; const indentCriterion = (index: number): void => { - emitCommit( - indentAcceptanceCriterionSubtree(props.modelValue, index), - 'indent', - ); + const items = indentAcceptanceCriterionSubtree(props.modelValue, index); + + if (props.modelValue[index]?.text.trim() === '') { + emitUpdate(items); + focusRow(index); + + return; + } + + emitCommit(items, 'indent'); }; const outdentCriterion = (index: number): void => { - emitCommit( - outdentAcceptanceCriterionSubtree(props.modelValue, index), - 'indent', - ); + const items = outdentAcceptanceCriterionSubtree(props.modelValue, index); + + if (props.modelValue[index]?.text.trim() === '') { + emitUpdate(items); + focusRow(index); + + return; + } + + emitCommit(items, 'indent'); }; const moveCriterion = (index: number, direction: 'down' | 'up'): void => { diff --git a/resources/js/pages/projects/Ticket.vue b/resources/js/pages/projects/Ticket.vue index 32f121b..ce6ab0e 100644 --- a/resources/js/pages/projects/Ticket.vue +++ b/resources/js/pages/projects/Ticket.vue @@ -878,9 +878,6 @@ const formatDateTime = (value: string): string => {