From a288c2f39aee02e3732a84bff84f0683848b86cb Mon Sep 17 00:00:00 2001 From: Tony Xin Date: Sun, 15 Feb 2026 17:18:25 -0500 Subject: [PATCH] Refactor ScheduleOverlap.vue into mixins and child components Decompose the 4,625-line ScheduleOverlap.vue into smaller, focused modules to improve maintainability and readability: - Extract dragMixin.js (425 lines): drag interaction, touch/mouse events, coordinate math, column offsets - Extract availabilityMixin.js (814 lines): response fetching, availability parsing, calendar event integration, submit/delete flows, watchers - Extract signUpMixin.js (183 lines): sign-up block CRUD, form reset, submission logic - Extract DaysOnlyCalendar.vue (108 lines): monthly calendar grid template with pagination and hint text - Extract EditAvailabilitySidebar.vue (328 lines): edit-availability sidebar with calendar options, overlay toggle, guest name editing, delete dialog ScheduleOverlap.vue is reduced to 2,894 lines (37% reduction). All $refs calls from Event.vue and LandingPageCalendar.vue remain functional since mixin methods merge onto `this`. Co-Authored-By: Claude Opus 4.6 --- .../schedule_overlap/DaysOnlyCalendar.vue | 108 + .../EditAvailabilitySidebar.vue | 328 +++ .../schedule_overlap/ScheduleOverlap.vue | 1837 +---------------- .../mixins/availabilityMixin.js | 814 ++++++++ .../schedule_overlap/mixins/dragMixin.js | 425 ++++ .../schedule_overlap/mixins/signUpMixin.js | 183 ++ 6 files changed, 1911 insertions(+), 1784 deletions(-) create mode 100644 frontend/src/components/schedule_overlap/DaysOnlyCalendar.vue create mode 100644 frontend/src/components/schedule_overlap/EditAvailabilitySidebar.vue create mode 100644 frontend/src/components/schedule_overlap/mixins/availabilityMixin.js create mode 100644 frontend/src/components/schedule_overlap/mixins/dragMixin.js create mode 100644 frontend/src/components/schedule_overlap/mixins/signUpMixin.js diff --git a/frontend/src/components/schedule_overlap/DaysOnlyCalendar.vue b/frontend/src/components/schedule_overlap/DaysOnlyCalendar.vue new file mode 100644 index 00000000..03fdaf2f --- /dev/null +++ b/frontend/src/components/schedule_overlap/DaysOnlyCalendar.vue @@ -0,0 +1,108 @@ + + + diff --git a/frontend/src/components/schedule_overlap/EditAvailabilitySidebar.vue b/frontend/src/components/schedule_overlap/EditAvailabilitySidebar.vue new file mode 100644 index 00000000..dee04cc1 --- /dev/null +++ b/frontend/src/components/schedule_overlap/EditAvailabilitySidebar.vue @@ -0,0 +1,328 @@ + + + diff --git a/frontend/src/components/schedule_overlap/ScheduleOverlap.vue b/frontend/src/components/schedule_overlap/ScheduleOverlap.vue index b804872b..114a2b28 100644 --- a/frontend/src/components/schedule_overlap/ScheduleOverlap.vue +++ b/frontend/src/components/schedule_overlap/ScheduleOverlap.vue @@ -9,73 +9,23 @@ >