feat: Major UX Improvements - Perfect Builder Experience! 🎯
## ✅ 1. Prevent Link/Button Navigation in Builder **Problem:** Clicking links/buttons redirected users, preventing editing **Solution:** - Added click handler in BlockRenderer to prevent navigation - Added handleClick in TipTap editorProps - Links and buttons now only editable, not clickable **Files:** - `components/EmailBuilder/BlockRenderer.tsx` - `components/ui/rich-text-editor.tsx` ## ✅ 2. Default Templates Use Raw Buttons **Problem:** Default content had formatted buttons in cards **Solution:** - Changed `[card]<a class="button">...</a>[/card]` - To `[button link="..." style="solid"]...[/button]` - Matches current block structure **File:** - `includes/Core/Notifications/TemplateProvider.php` ## ✅ 3. Split Order Items into List & Table **Problem:** Only one order_items variable **Solution:** - `{order_items_list}` - Formatted list (ul/li) - `{order_items_table}` - Formatted table - Better control over presentation **File:** - `includes/Core/Notifications/TemplateProvider.php` ## ✅ 4. Payment URL Variable Added **Problem:** No way to link to payment page **Solution:** - Added `{payment_url}` variable - Strategy: - Manual payment → order details/thankyou page - API payment → payment gateway URL - Reads from order payment_meta **File:** - `includes/Core/Notifications/TemplateProvider.php` ## ✅ 5. Variable Categorization (Noted) **Strategy for future:** - Order events: order_items_table, payment_url - Account events: login_url, account_url - Contextual variables only - Better UX, less confusion ## ✅ 6. WordPress Media Library Fixed **Problem:** WP Media not loaded, showing browser prompt **Solution:** - Added `wp_enqueue_media()` in Assets.php - Changed prompt to alert with better message - Added debugging console logs - Now loads properly! **Files:** - `includes/Admin/Assets.php` - `lib/wp-media.ts` --- ## 📋 Summary All 6 UX improvements implemented: 1. ✅ No navigation in builder (links/buttons editable only) 2. ✅ Default templates use raw buttons 3. ✅ Order items split: list & table 4. ✅ Payment URL variable added 5. ✅ Variable categorization strategy noted 6. ✅ WordPress Media library properly loaded **Perfect builder experience achieved!** 🎉
This commit is contained in:
@@ -24,6 +24,15 @@ export function BlockRenderer({
|
||||
isLast
|
||||
}: BlockRendererProps) {
|
||||
|
||||
// Prevent navigation in builder
|
||||
const handleClick = (e: React.MouseEvent) => {
|
||||
const target = e.target as HTMLElement;
|
||||
if (target.tagName === 'A' || target.tagName === 'BUTTON' || target.closest('a') || target.closest('button')) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
}
|
||||
};
|
||||
|
||||
const renderBlockContent = () => {
|
||||
switch (block.type) {
|
||||
case 'card':
|
||||
@@ -119,7 +128,7 @@ export function BlockRenderer({
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="group relative">
|
||||
<div className="group relative" onClick={handleClick}>
|
||||
{/* Block Content */}
|
||||
<div className={`transition-all ${isEditing ? 'ring-2 ring-purple-500 ring-offset-2' : ''}`}>
|
||||
{renderBlockContent()}
|
||||
|
||||
Reference in New Issue
Block a user