diff --git a/src/modules/task/components/NewTaskForm.vue b/src/modules/task/components/NewTaskForm.vue
index c539134..62b1780 100644
--- a/src/modules/task/components/NewTaskForm.vue
+++ b/src/modules/task/components/NewTaskForm.vue
@@ -5,11 +5,12 @@ import TaskForm from './TaskForm.vue'
const props = defineProps<{
initialSteps?: Stepable[]
+ initialTitle?: string
}>()
const id = createUuid()
-
+
diff --git a/src/modules/task/components/TaskForm.vue b/src/modules/task/components/TaskForm.vue
index d8e02ab..fcca9c3 100644
--- a/src/modules/task/components/TaskForm.vue
+++ b/src/modules/task/components/TaskForm.vue
@@ -15,6 +15,7 @@ const props = defineProps<{
id: string
initialTask?: Taskable
initialSteps?: Stepable[]
+ initialTitle?: string
}>()
const id = computed(() => props.id)
const hasTasks = computed(() => store.tasks.length > 0)
@@ -29,7 +30,7 @@ const steps = ref(
: exampleSteps
)
-const title = ref(props.initialTask?.title ?? '')
+const title = ref(props.initialTitle ?? props.initialTask?.title ?? '')
const link = ref(props.initialTask?.link ?? '')
const totalEstimation = computed(() =>
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index 997043a..95c965f 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -16,20 +16,34 @@ const resetTasks = () => {
}
}
+const extractTitleFromPaste = (
+ text: string
+): { title: string | null; content: string } => {
+ const match = text.match(/^(#{1,6})\s+(.+?)\n+([\s\S]*)$/)
+ if (match) {
+ return { title: match[2].trim(), content: match[3] }
+ }
+ return { title: null, content: text }
+}
+
const handlePaste = (event: ClipboardEvent) => {
const clipboardText = event.clipboardData?.getData('text')
if (!clipboardText) {
return
}
- const steps = adaptTextareaToSteps(clipboardText)
+ const { title, content } = extractTitleFromPaste(clipboardText)
+ const steps = adaptTextareaToSteps(content)
if (steps.length === 0) {
return
}
router.push({
name: 'new-task',
- state: { initialSteps: JSON.stringify(steps) }
+ state: {
+ initialTitle: title,
+ initialSteps: JSON.stringify(steps)
+ }
})
}
diff --git a/src/views/task/NewTask.vue b/src/views/task/NewTask.vue
index ddf3daa..c7546f2 100644
--- a/src/views/task/NewTask.vue
+++ b/src/views/task/NewTask.vue
@@ -6,10 +6,11 @@ const rawInitialSteps = history.state?.initialSteps as string | undefined
const initialSteps = rawInitialSteps
? (JSON.parse(rawInitialSteps) as Stepable[])
: undefined
+const initialTitle = history.state?.initialTitle as string | undefined
-
+