Visual drag-and-drop website builder using GrapesJS with: - Multi-page editor with live preview - File-based asset storage via PHP API (no localStorage base64) - Template library, Docker support, and Playwright test suite Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.1 KiB
4.1 KiB
Site Builder Features (2026-02-22)
1. Anchor Points & Link System
- Anchor Point block: Drag-and-drop anchor points with configurable
idattribute - Link Type Selector: When selecting a link/button element, choose between:
- External URL (manual input)
- Page Link (dropdown of all pages)
- Anchor on Page (dropdown of all anchors on current page)
- Anchors automatically populate in the dropdown
2. Asset Manager
- New "Assets" tab in left panel
- File upload: Upload images, videos, PDFs via file picker (stored as data URLs in localStorage)
- URL-based assets: Add assets by pasting URLs
- Asset grid: Visual grid showing thumbnails for images, icons for other file types
- Click to copy: Click any asset to copy its URL to clipboard
- Delete assets: Remove with × button
- Assets are also registered in GrapesJS's built-in asset manager for image selection
3. Image Resize/Crop (PHP Backend)
- API endpoint:
api/image-resize.php - Modes:
resize,crop,fit - Input: File upload or URL
- Parameters: width, height, quality (1-100), format (jpg/png/webp/auto)
- Output: JSON with resized image path, dimensions, and file size
- Requires PHP with GD extension on the server
4. Video Element Fix
- Video block has properly registered
video-wrappercomponent type - Video URL trait: Enter YouTube, Vimeo, or direct video file URLs
- Apply Video button: Click to apply the video URL
- Video Section (BG): Separate component type for video background sections
- Both component types (
video-wrapperandvideo-section) are registered and functional
5. Element Deletion Improvement
- "Delete Section" context menu option: Right-click any element → "Delete Section"
- Walks up the component tree to find the topmost parent (before the wrapper)
- Deletes the entire section including all child components
- Confirmation dialog before deletion
6. Header/Site-wide Elements
- New "Head" tab in right panel
- Page
<head>Code: Add scripts, meta tags, and other<head>elements - Site-wide CSS: Add CSS that applies to all pages
- Both are saved to localStorage and included in exports
- Site-wide CSS is applied live to the canvas editor
7. PDF/File Display Element
- "File / PDF" block in Media category
- Uses
<iframe>for embedding - File URL trait: Enter URL of PDF or document
- Height control: Adjustable iframe height
- Apply File button: Click to load the file
- Google Docs Viewer fallback for non-PDF files
- Placeholder UI with instructions when no file is loaded
8. Missing Icons Fixed
- Section block:
fa fa-columnsicon - Newsletter block:
fa fa-newspapericon - Spacer block:
fa fa-arrows-alt-vicon - All using Font Awesome 5 compatible class names
9. Typography Advanced Settings
- Font Family: Dropdown with 11 font options (Inter, Roboto, Open Sans, Poppins, Montserrat, Playfair Display, Merriweather, Source Code Pro, Arial, Georgia, Times New Roman)
- Font Weight: Dropdown from Thin (100) to Black (900)
- Letter Spacing: Number input with px/em/rem units
- Line Height: Number input with px/em/%/unitless options
- Text Align: Radio buttons with icons (left, center, right, justify)
- All properties properly configured in GrapesJS StyleManager
10. Logo Element Improvement
- Logo Mode trait: Select between Text Only, Image Only, or Image + Text
- Logo Text trait: Set the text content
- Logo Image URL trait: Set an image URL for the logo
- Apply Logo button: Regenerates the logo component based on selected mode
- Text mode shows initial letter icon + text (original behavior)
- Image mode shows just the image
- Both mode shows image + text side by side
Additional Improvements
- Local vendor scripts: GrapesJS and plugins now load from local
vendor/directory (no CDN dependency) - Plugin compatibility fix: Fixed
gjs-blocks-basicglobal name mismatch - Context menu: Added "Delete Section" alongside existing "Delete"
Testing
- 17 Playwright tests covering all features
- Run:
npx playwright test tests/features.spec.js - All tests passing ✅