Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: bugfix and update Preview.tsx #1420

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

Stijnus
Copy link
Collaborator

@Stijnus Stijnus commented Mar 2, 2025

Fix for : #1097

Device Frame Feature Implementation

Key Features Added

  1. Device Frames for Mobile and Tablet Previews

    • Added visual frames for iPhone and iPad devices
    • Implemented both portrait and landscape orientations
    • Created realistic device bezels with notches and home buttons
  2. Device Options Panel

    • Added toggle for showing/hiding device frames
    • Added toggle for landscape/portrait orientation
    • Updated device size information display
  3. External Window Preview Enhancements

    • Fixed "about:blank" issue with external previews
    • Implemented reliable window creation with proper dimensions
    • Added device name and orientation labels

Technical Implementation Details

  1. Frame Rendering Approach

    • Created a complete HTML document with styling for device frames
    • Used document.write() to inject content into new window
    • Implemented proper iframe loading within the device frame
  2. Responsive Design

    • Dynamic adjustment of frame elements based on device type
    • Proper handling of orientation changes (landscape/portrait)
    • Appropriate sizing for different device types (mobile vs tablet)
  3. Security and Reliability

    • Avoided cross-origin manipulation issues
    • Implemented error handling for window creation
    • Maintained proper sandbox attributes for security

UI/UX Improvements

  1. Visual Enhancements

    • Added realistic device styling (rounded corners, notches, buttons)
    • Implemented proper shadows and depth for 3D appearance
    • Created clean, minimal interface for device controls
  2. User Controls

    • Intuitive toggles for device frame and orientation
    • Clear labeling of device dimensions and frame status
    • Maintained existing preview functionality while adding new features

Code Quality

  1. Maintainability

    • Used TypeScript interfaces for proper typing
    • Implemented clean separation of concerns
    • Added appropriate comments for complex sections
  2. Performance

    • Optimized rendering approach to avoid unnecessary reflows
    • Used efficient DOM manipulation techniques
    • Maintained responsive performance across different device sizes

# Device Frame Feature Implementation

## Key Features Added
1. **Device Frames for Mobile and Tablet Previews**
   - Added visual frames for iPhone and iPad devices
   - Implemented both portrait and landscape orientations
   - Created realistic device bezels with notches and home buttons

2. **Device Options Panel**
   - Added toggle for showing/hiding device frames
   - Added toggle for landscape/portrait orientation
   - Updated device size information display

3. **External Window Preview Enhancements**
   - Fixed "about:blank" issue with external previews
   - Implemented reliable window creation with proper dimensions
   - Added device name and orientation labels

## Technical Implementation Details
1. **Frame Rendering Approach**
   - Created a complete HTML document with styling for device frames
   - Used document.write() to inject content into new window
   - Implemented proper iframe loading within the device frame

2. **Responsive Design**
   - Dynamic adjustment of frame elements based on device type
   - Proper handling of orientation changes (landscape/portrait)
   - Appropriate sizing for different device types (mobile vs tablet)

3. **Security and Reliability**
   - Avoided cross-origin manipulation issues
   - Implemented error handling for window creation
   - Maintained proper sandbox attributes for security

## UI/UX Improvements
1. **Visual Enhancements**
   - Added realistic device styling (rounded corners, notches, buttons)
   - Implemented proper shadows and depth for 3D appearance
   - Created clean, minimal interface for device controls

2. **User Controls**
   - Intuitive toggles for device frame and orientation
   - Clear labeling of device dimensions and frame status
   - Maintained existing preview functionality while adding new features

## Code Quality
1. **Maintainability**
   - Used TypeScript interfaces for proper typing
   - Implemented clean separation of concerns
   - Added appropriate comments for complex sections

2. **Performance**
   - Optimized rendering approach to avoid unnecessary reflows
   - Used efficient DOM manipulation techniques
   - Maintained responsive performance across different device sizes
@Stijnus Stijnus changed the title fix: for https://github.com/stackblitz-labs/bolt.diy/issues/1097 and update Preview.tsx fix: bugfix and update Preview.tsx Mar 2, 2025
@leex279
Copy link
Collaborator

leex279 commented Mar 8, 2025

#1474 isnt this partly the same?

@Stijnus
Copy link
Collaborator Author

Stijnus commented Mar 8, 2025

yes, and it has some extra features also...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants