From 7edd8daf49a5f02bd3a4076dff278d72fc6a5472 Mon Sep 17 00:00:00 2001 From: Twyco Date: Thu, 10 Sep 2026 09:26:12 +0200 Subject: [PATCH] feat(KAN-20): unify dialogs feedback and protect ticket drafts --- resources/js/components/FeedbackState.vue | 72 ++++ resources/js/components/FormFeedback.vue | 67 +++ resources/js/components/InputError.vue | 4 +- .../js/components/ui/dialog/DialogContent.vue | 96 +++-- .../js/components/ui/dialog/DialogHeader.vue | 20 +- .../ui/dialog/DialogScrollContent.vue | 106 +++-- .../DropdownMenuCheckboxItem.vue | 69 +-- .../ui/dropdown-menu/DropdownMenuContent.vue | 64 +-- .../ui/dropdown-menu/DropdownMenuItem.vue | 56 ++- .../dropdown-menu/DropdownMenuRadioItem.vue | 69 +-- .../dropdown-menu/DropdownMenuSubContent.vue | 45 +- .../dropdown-menu/DropdownMenuSubTrigger.vue | 50 ++- .../js/components/ui/sheet/SheetContent.vue | 100 +++-- resources/js/composables/useDialogFocus.ts | 34 ++ resources/js/composables/useFormProtection.ts | 114 +++++ resources/js/composables/useUnsavedChanges.ts | 42 ++ resources/js/lib/form-feedback.ts | 42 ++ resources/js/locales/en.ts | 24 ++ resources/js/pages/projects/Ticket.vue | 113 ++++- resources/js/pages/projects/TicketCreate.vue | 42 +- tests/Feature/FormFeedbackTest.php | 19 + .../Projects/ProjectTicketControllerTest.php | 2 + tests/Fixtures/FeedbackPreview.vue | 154 +++++++ tests/Fixtures/feedback-browser.mjs | 404 ++++++++++++++++++ tests/Fixtures/feedback-preview.mjs | 26 ++ tests/Fixtures/feedback-server.mjs | 159 +++++++ tests/Fixtures/form-feedback.mjs | 129 ++++++ 27 files changed, 1793 insertions(+), 329 deletions(-) create mode 100644 resources/js/components/FeedbackState.vue create mode 100644 resources/js/components/FormFeedback.vue create mode 100644 resources/js/composables/useDialogFocus.ts create mode 100644 resources/js/composables/useFormProtection.ts create mode 100644 resources/js/composables/useUnsavedChanges.ts create mode 100644 resources/js/lib/form-feedback.ts create mode 100644 tests/Feature/FormFeedbackTest.php create mode 100644 tests/Fixtures/FeedbackPreview.vue create mode 100644 tests/Fixtures/feedback-browser.mjs create mode 100644 tests/Fixtures/feedback-preview.mjs create mode 100644 tests/Fixtures/feedback-server.mjs create mode 100644 tests/Fixtures/form-feedback.mjs diff --git a/resources/js/components/FeedbackState.vue b/resources/js/components/FeedbackState.vue new file mode 100644 index 0000000..4e8b59d --- /dev/null +++ b/resources/js/components/FeedbackState.vue @@ -0,0 +1,72 @@ + + + diff --git a/resources/js/components/FormFeedback.vue b/resources/js/components/FormFeedback.vue new file mode 100644 index 0000000..9d9e9a4 --- /dev/null +++ b/resources/js/components/FormFeedback.vue @@ -0,0 +1,67 @@ + + + diff --git a/resources/js/components/InputError.vue b/resources/js/components/InputError.vue index 3db9519..7dbf753 100644 --- a/resources/js/components/InputError.vue +++ b/resources/js/components/InputError.vue @@ -5,8 +5,8 @@ defineProps<{