diff --git a/MOBILE_SAFARI_KEYCLOAK_FIXES_SUMMARY.md b/MOBILE_SAFARI_KEYCLOAK_FIXES_SUMMARY.md index b33a26f..42c271a 100644 --- a/MOBILE_SAFARI_KEYCLOAK_FIXES_SUMMARY.md +++ b/MOBILE_SAFARI_KEYCLOAK_FIXES_SUMMARY.md @@ -10,6 +10,10 @@ **Problem:** "Set Your Password" button leading to "Page not found" **Status:** ✅ FIXED +### **3. Country Dropdown Completely Broken on Mobile** +**Problem:** Country selection dropdown overlapping with other elements, unusable interface +**Status:** ✅ FIXED + --- ## 🔍 **Root Causes & Solutions** @@ -84,6 +88,42 @@ const setupPasswordUrl = computed(() => { }); ``` +### **Country Dropdown Broken on Mobile** + +#### **Root Causes:** +1. **Vuetify v-select Issues:** Mobile Safari incompatibility with complex dropdown positioning +2. **Z-index Conflicts:** Dropdown overlapping with other form elements +3. **Touch Interaction Problems:** Poor touch responsiveness on mobile devices +4. **Layout Disruption:** Dropdown breaking the form layout and rendering incorrectly + +#### **Solutions Implemented:** +```typescript +// 1. Mobile-Optimized Country Selector +components/MultipleNationalityInput.vue +- Device detection to switch between desktop v-select and mobile dialog +- Full-screen country selection dialog for mobile Safari +- Touch-optimized interface with larger touch targets +- Search functionality with smooth scrolling + +// 2. Mobile Dialog Interface + + + + + + +// 3. Performance Optimizations +- Hardware acceleration for smooth scrolling +- Disabled transitions for performance mode +- Touch-friendly 60px minimum button heights +- -webkit-overflow-scrolling: touch for iOS +``` + --- ## 📁 **Files Modified** diff --git a/components/MultipleNationalityInput.vue b/components/MultipleNationalityInput.vue index 223793a..a7b5fc3 100644 --- a/components/MultipleNationalityInput.vue +++ b/components/MultipleNationalityInput.vue @@ -6,7 +6,33 @@ :key="`nationality-${index}`" class="nationality-item d-flex align-center gap-2 mb-2" > + + + + + + + + + + + + Select Country + + + + + + + +
+ +
+ + + + + + + + No countries found + + + +
+ + + + + + + Cancel + + +
+
+ + diff --git a/server/api/registration.post.ts b/server/api/registration.post.ts index 89e9135..e80b9d2 100644 --- a/server/api/registration.post.ts +++ b/server/api/registration.post.ts @@ -144,7 +144,8 @@ export default defineEventHandler(async (event) => { const emailService = await getEmailService(); const verificationToken = await generateEmailVerificationToken(createdKeycloakId, body.email); const config = useRuntimeConfig(); - const verificationLink = `${config.public.domain}/api/auth/verify-email?token=${verificationToken}`; + // Fix: Point to user-friendly verification page instead of direct API endpoint + const verificationLink = `${config.public.domain}/auth/verify?token=${verificationToken}`; await emailService.sendWelcomeEmail(body.email, { firstName: body.first_name,