mirror of
https://github.com/Dvorinka/MyClubServer.git
synced 2026-06-04 10:42:57 +00:00
161 lines
5.1 KiB
Markdown
161 lines
5.1 KiB
Markdown
# MyUIbrix Grid Layout Feature
|
|
|
|
## Overview
|
|
Enhanced the MyUIbrix Editor with comprehensive **Grid Layout Controls** that allow admins to split sections into different grid configurations with visual templates and fine-grained control.
|
|
|
|
## New Features Added
|
|
|
|
### 1. Grid Layout Tab in VisualStylePanel
|
|
A new dedicated **Grid** tab has been added to the left sidebar style panel with:
|
|
|
|
#### Quick Templates (One-Click Layouts)
|
|
- 📱 **Single Column** - `1fr`
|
|
- ⚖️ **Two Equal** (50% / 50%) - `1fr 1fr`
|
|
- 📊 **Left Larger** (66% / 33%) - `2fr 1fr`
|
|
- 📊 **Right Larger** (33% / 66%) - `1fr 2fr`
|
|
- 🎯 **Three Equal** (33% / 33% / 33%) - `1fr 1fr 1fr`
|
|
- 📰 **Featured + Two** (50% / 25% / 25%) - `2fr 1fr 1fr`
|
|
- 🔲 **Four Equal** (25% each) - `repeat(4, 1fr)`
|
|
- 📋 **Main + Sidebar** (75% / 25%) - `3fr 1fr`
|
|
|
|
#### Advanced Grid Controls
|
|
- **Grid Template Columns**: Custom input for precise control (e.g., `300px 1fr`, `2fr 1fr 1fr`)
|
|
- **Grid Template Rows**: Control row sizing
|
|
- **Column Gap**: 0-100px slider
|
|
- **Row Gap**: 0-100px slider
|
|
- **Auto Flow**: Row, Column, Row Dense, Column Dense
|
|
- **Align Items**: Vertical alignment (stretch, start, center, end, baseline)
|
|
- **Justify Items**: Horizontal alignment (stretch, start, center, end)
|
|
|
|
### 2. Real-Time Style Application
|
|
- Styles are applied **instantly** in preview mode
|
|
- Uses CSS Grid with proper `grid-template-columns`, `column-gap`, `row-gap`
|
|
- Automatic camelCase to kebab-case conversion
|
|
- Smart unit handling (px for numeric values)
|
|
|
|
### 3. Style Persistence
|
|
- Grid styles are stored in state
|
|
- Applied to DOM elements via `data-element` attribute
|
|
- Works seamlessly with existing variant system
|
|
|
|
## How to Use
|
|
|
|
### Step 1: Activate MyUIbrix Editor
|
|
1. Navigate to the homepage as an **admin**
|
|
2. Click the **purple edit button** (bottom-left corner)
|
|
3. Or add `?myuibrix=edit` to the URL
|
|
|
|
### Step 2: Select an Element
|
|
1. Click on any element you want to configure (e.g., hero, news, gallery)
|
|
2. The element will be highlighted with a blue border
|
|
3. The VisualStylePanel will appear on the left
|
|
|
|
### Step 3: Configure Grid Layout
|
|
1. Click the **Grid** tab in the VisualStylePanel
|
|
2. Toggle **"Enable Grid Layout"** switch to ON
|
|
3. Choose a quick template or customize:
|
|
- Click a template button for instant layouts
|
|
- OR manually enter `grid-template-columns` values
|
|
- Adjust gaps with sliders
|
|
- Fine-tune alignment options
|
|
|
|
### Step 4: Preview & Publish
|
|
1. Changes apply **instantly in preview** (only visible to you)
|
|
2. Click **"Publikovat"** (Publish) in the top bar to save
|
|
3. Page reloads and changes go live for all users
|
|
|
|
## Examples
|
|
|
|
### Example 1: Blog Post Layout (Left Content + Right Sidebar)
|
|
```
|
|
grid-template-columns: 2fr 1fr
|
|
column-gap: 32px
|
|
```
|
|
Creates a 66%/33% split - perfect for main content with a sidebar.
|
|
|
|
### Example 2: Photo Gallery (Three Equal Columns)
|
|
```
|
|
grid-template-columns: 1fr 1fr 1fr
|
|
column-gap: 16px
|
|
row-gap: 16px
|
|
```
|
|
Creates a 3-column equal-width grid with spacing.
|
|
|
|
### Example 3: Hero Section (Featured + Two)
|
|
```
|
|
grid-template-columns: 2fr 1fr 1fr
|
|
column-gap: 24px
|
|
```
|
|
Creates a 50%/25%/25% split - large featured item with two smaller items.
|
|
|
|
### Example 4: Custom Fixed + Flexible
|
|
```
|
|
grid-template-columns: 300px 1fr
|
|
column-gap: 40px
|
|
```
|
|
Fixed 300px sidebar + flexible main content.
|
|
|
|
## Technical Details
|
|
|
|
### Files Modified
|
|
1. **`frontend/src/components/editor/VisualStylePanel.tsx`**
|
|
- Added Grid tab with templates and controls
|
|
- Imported `FiGrid` icon and `Button` component
|
|
- Added grid-related state variables
|
|
|
|
2. **`frontend/src/hooks/usePageElementConfig.ts`**
|
|
- Added `styles` state management
|
|
- Added `handleMyUIbrixStyleChange` event listener
|
|
- Added `getStyles()` function
|
|
- Real-time DOM style application
|
|
|
|
### Event System
|
|
- **Event**: `myuibrix-style-change`
|
|
- **Detail**: `{ elementName, styles, previewMode }`
|
|
- **Flow**: VisualStylePanel → MyUIbrixEditor → usePageElementConfig → DOM
|
|
|
|
### CSS Properties Supported
|
|
- `display: grid`
|
|
- `grid-template-columns`
|
|
- `grid-template-rows`
|
|
- `grid-column-gap` / `column-gap`
|
|
- `grid-row-gap` / `row-gap`
|
|
- `grid-auto-flow`
|
|
- `align-items`
|
|
- `justify-items`
|
|
- All standard CSS properties (padding, margin, colors, typography, etc.)
|
|
|
|
## Browser Compatibility
|
|
- CSS Grid is supported in all modern browsers
|
|
- IE11 requires fallbacks (not implemented)
|
|
|
|
## Future Enhancements
|
|
- [ ] Responsive grid templates (mobile/tablet breakpoints)
|
|
- [ ] Grid area naming and placement
|
|
- [ ] Visual grid template builder (drag-and-drop)
|
|
- [ ] Save/load custom grid templates
|
|
- [ ] Export grid as reusable component
|
|
|
|
## Troubleshooting
|
|
|
|
### Styles Not Applying?
|
|
1. Ensure element has `data-element="elementName"` attribute
|
|
2. Check browser console for errors
|
|
3. Verify grid is enabled (toggle switch ON)
|
|
|
|
### Changes Not Saving?
|
|
1. Click **Publikovat** button to save
|
|
2. Check for error toasts
|
|
3. Verify admin authentication
|
|
|
|
### Preview Mode vs Production
|
|
- In **preview mode** (editing): Changes visible only to you
|
|
- After **publishing**: Changes visible to all users
|
|
- Use this to test layouts before going live
|
|
|
|
---
|
|
|
|
**Created**: 2025-01-15
|
|
**Version**: 1.0
|
|
**Author**: MyUIbrix Development Team
|