fix: Correct Back Navigation & Use Existing Dialog Pattern! 🔧
## Issue #1: Back Button Navigation Fixed **Problem:** Back button navigated too far to Notifications.tsx **Root Cause:** Wrong route - should go to /staff or /customer page with templates tab **Solution:** - Detect if staff or customer event - Navigate to `/settings/notifications/{staff|customer}?tab=templates` - Staff.tsx and Customer.tsx read tab query param - Auto-open templates tab on return **Files:** - `routes/Settings/Notifications/EditTemplate.tsx` - `routes/Settings/Notifications/Staff.tsx` - `routes/Settings/Notifications/Customer.tsx` ## Issue #2: Dialog Pattern - Use Existing, Dont Reinvent! **Problem:** Created new DialogBody component, over-engineered **Root Cause:** Didnt check existing dialog usage in project **Solution:** - Reverted dialog.tsx to original - Use existing pattern from Shipping.tsx: ```tsx <DialogContent className="max-h-[90vh] overflow-y-auto"> ``` - Simple, proven, works! **Files:** - `components/ui/dialog.tsx` - Reverted to original - `components/ui/rich-text-editor.tsx` - Use existing pattern **Lesson Learned:** Always scan project for existing patterns before creating new ones! Both issues fixed! ✅
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import React, { useState } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import { Link, useSearchParams } from 'react-router-dom';
|
||||
import { SettingsLayout } from '../components/SettingsLayout';
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
|
||||
import { Button } from '@/components/ui/button';
|
||||
@@ -10,8 +10,17 @@ import CustomerEvents from './Customer/Events';
|
||||
import NotificationTemplates from './Templates';
|
||||
|
||||
export default function CustomerNotifications() {
|
||||
const [searchParams] = useSearchParams();
|
||||
const [activeTab, setActiveTab] = useState('channels');
|
||||
|
||||
// Check for tab query param
|
||||
useEffect(() => {
|
||||
const tabParam = searchParams.get('tab');
|
||||
if (tabParam && ['channels', 'events', 'templates'].includes(tabParam)) {
|
||||
setActiveTab(tabParam);
|
||||
}
|
||||
}, [searchParams]);
|
||||
|
||||
return (
|
||||
<SettingsLayout
|
||||
title={__('Customer Notifications')}
|
||||
|
||||
@@ -340,7 +340,12 @@ export default function EditTemplate() {
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
onClick={() => navigate(`/settings/notifications?tab=${channelId}&event=${eventId}`)}
|
||||
onClick={() => {
|
||||
// Determine if staff or customer based on event category
|
||||
const isStaffEvent = template.event_category === 'staff' || eventId?.includes('admin') || eventId?.includes('staff');
|
||||
const page = isStaffEvent ? 'staff' : 'customer';
|
||||
navigate(`/settings/notifications/${page}?tab=templates`);
|
||||
}}
|
||||
className="gap-2"
|
||||
title={__('Back')}
|
||||
>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import React, { useState } from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import { Link, useSearchParams } from 'react-router-dom';
|
||||
import { SettingsLayout } from '../components/SettingsLayout';
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
|
||||
import { Button } from '@/components/ui/button';
|
||||
@@ -10,8 +10,17 @@ import StaffEvents from './Staff/Events';
|
||||
import NotificationTemplates from './Templates';
|
||||
|
||||
export default function StaffNotifications() {
|
||||
const [searchParams] = useSearchParams();
|
||||
const [activeTab, setActiveTab] = useState('channels');
|
||||
|
||||
// Check for tab query param
|
||||
useEffect(() => {
|
||||
const tabParam = searchParams.get('tab');
|
||||
if (tabParam && ['channels', 'events', 'templates'].includes(tabParam)) {
|
||||
setActiveTab(tabParam);
|
||||
}
|
||||
}, [searchParams]);
|
||||
|
||||
return (
|
||||
<SettingsLayout
|
||||
title={__('Staff Notifications')}
|
||||
|
||||
Reference in New Issue
Block a user