diff --git a/resources/js/components/tickets/detail/TicketDetailBlocker.vue b/resources/js/components/tickets/detail/TicketDetailBlocker.vue
new file mode 100644
index 0000000..a3ce18a
--- /dev/null
+++ b/resources/js/components/tickets/detail/TicketDetailBlocker.vue
@@ -0,0 +1,204 @@
+
+
+
+
+
diff --git a/resources/js/components/tickets/detail/TicketDetailContent.vue b/resources/js/components/tickets/detail/TicketDetailContent.vue
index b488033..187d798 100644
--- a/resources/js/components/tickets/detail/TicketDetailContent.vue
+++ b/resources/js/components/tickets/detail/TicketDetailContent.vue
@@ -3,7 +3,15 @@ import { useLocalization } from '@/composables/useLocalization';
import { Card, CardContent, CardHeader } from '@/components/ui/card';
import { useForm, useRemember } from '@inertiajs/vue3';
-import { computed, ref, toRef, unref, useTemplateRef, nextTick } from 'vue';
+import {
+ computed,
+ ref,
+ toRef,
+ unref,
+ useTemplateRef,
+ nextTick,
+ watch,
+} from 'vue';
import ProjectTicketController from '@/actions/App/Http/Controllers/ProjectTicketController';
import InputError from '@/components/InputError.vue';
import AcceptanceCriteriaChecklist from '@/components/tickets/AcceptanceCriteriaChecklist.vue';
@@ -11,7 +19,6 @@ import FormFeedback from '@/components/FormFeedback.vue';
import { Button } from '@/components/ui/button';
import TicketFormField from '@/components/tickets/TicketFormField.vue';
import TicketFormFields from '@/components/tickets/TicketFormFields.vue';
-import { Label } from '@/components/ui/label';
import { useFormProtection } from '@/composables/useFormProtection';
import {
normalizeAcceptanceCriteria,
@@ -81,6 +88,16 @@ const savedFormData = () => ({
const form = useForm(draftKey, savedFormData());
+watch(
+ () => [props.ticket.is_blocked, props.ticket.blocked_comment] as const,
+ ([isBlocked, blockedComment]) => {
+ form.is_blocked = isBlocked;
+ form.blocked_comment = blockedComment ?? '';
+ form.defaults('is_blocked', isBlocked);
+ form.defaults('blocked_comment', blockedComment ?? '');
+ },
+);
+
const hasUnsavedAcceptanceCriteriaDraft = computed(
() =>
JSON.stringify(acceptanceCriteriaItems.value) !==
@@ -364,44 +381,6 @@ const submit = (): void => {
/>
-