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