feat: Wishlist settings cleanup + Categories/Tags/Attributes CRUD pages

Wishlist Settings Cleanup:
- Removed wishlist_page setting (not needed for SPA architecture)
- Marked advanced features as 'Coming Soon' with disabled flag:
  * Wishlist Sharing
  * Back in Stock Notifications
  * Multiple Wishlists
- Added disabled prop support to SchemaField toggle component
- Kept only working features: guest wishlist, show in header, max items, add to cart button

Product Taxonomy CRUD Pages:
Built full CRUD interfaces for all three taxonomy types:

1. Categories (/products/categories):
   - Table view with search
   - Create/Edit dialog with name, slug, description
   - Delete with confirmation
   - Product count display
   - Parent category support

2. Tags (/products/tags):
   - Table view with search
   - Create/Edit dialog with name, slug, description
   - Delete with confirmation
   - Product count display

3. Attributes (/products/attributes):
   - Table view with search
   - Create/Edit dialog with label, slug, type, orderby
   - Delete with confirmation
   - Type selector (Select/Text)
   - Sort order selector (Custom/Name/ID)

All pages include:
- React Query for data fetching/mutations
- Toast notifications for success/error
- Loading states
- Empty states
- Responsive tables
- Dialog forms with validation

Files Modified:
- includes/Modules/WishlistSettings.php (removed page selector, marked advanced as coming soon)
- admin-spa/src/components/forms/SchemaField.tsx (added disabled prop)
- admin-spa/src/routes/Products/Categories.tsx (full CRUD)
- admin-spa/src/routes/Products/Tags.tsx (full CRUD)
- admin-spa/src/routes/Products/Attributes.tsx (full CRUD)
- admin-spa/src/components/nav/SubmenuBar.tsx (removed debug logging)
- admin-spa/dist/app.js (rebuilt)

Result:
 Wishlist settings now clearly show what's implemented vs coming soon
 Categories/Tags/Attributes pages fully functional
 Professional CRUD interfaces matching admin design
 All taxonomy management now in SPA
This commit is contained in:
Dwindi Ramadhana
2025-12-26 23:43:40 +07:00
parent 1c6b76efb4
commit 4095d2a70c
6 changed files with 743 additions and 55 deletions

View File

@@ -16,6 +16,7 @@ export interface FieldSchema {
options?: Record<string, string>;
min?: number;
max?: number;
disabled?: boolean;
}
interface SchemaFieldProps {
@@ -72,6 +73,7 @@ export function SchemaField({ name, schema, value, onChange, error }: SchemaFiel
<Switch
checked={!!value}
onCheckedChange={onChange}
disabled={schema.disabled}
/>
<span className="text-sm text-muted-foreground">
{value ? 'Enabled' : 'Disabled'}

View File

@@ -30,11 +30,6 @@ export default function SubmenuBar({ items = [], fullscreen = false, headerVisib
// Only ONE submenu item should be active at a time
const isActive = it.path === pathname;
// Debug logging for Dashboard Overview issue
if (it.label === 'Overview' && pathname.includes('dashboard')) {
console.log('Overview check:', { label: it.label, path: it.path, pathname, isActive });
}
const cls = [
'ui-ctrl inline-flex items-center gap-2 rounded-md px-2.5 py-1.5 border text-sm whitespace-nowrap',
'focus:outline-none focus:ring-0 focus:shadow-none',