Files
MyClub/DOCS/RICH_TEXT_EDITOR_VISIBILITY_FIX.md
Tomas Dvorak 087f30e82c dev day #80
2025-11-02 21:31:00 +01:00

3.3 KiB

Rich Text Editor Visibility Fix

Date: October 21, 2025
Issue: Quill rich text editor not visible in admin forms

Problem

The rich text editor was rendering but completely invisible - no toolbar, no text area, nothing. This affected article creation, activity forms, and any other admin page using the editor.

Root Cause

The Quill CSS files (quill.snow.css) were being imported at the component level in CustomRichEditor.tsx, but these imports weren't being processed correctly by the CRACO/Create React App webpack build system. This is a common issue with third-party CSS libraries.

Solution Applied

1. Moved CSS Imports to Global Entry Point

File: frontend/src/index.tsx

Added the following imports at the top of the file (after other CSS imports):

// Quill editor styles (MUST be imported globally)
import 'react-quill/dist/quill.snow.css';
import 'react-image-crop/dist/ReactCrop.css';
import './styles/custom-editor.css';

2. Removed Duplicate Component Imports

File: frontend/src/components/common/CustomRichEditor.tsx

Removed the CSS imports from the component since they're now loaded globally:

// REMOVED (now in index.tsx):
// import 'react-quill/dist/quill.snow.css';
// import 'react-image-crop/dist/ReactCrop.css';
// import '../../styles/custom-editor.css';

3. Documentation Update

File: DOCS/ADMIN_TROUBLESHOOTING.md

Added troubleshooting section #14 documenting this issue and solution for future reference.

What You Need to Do

1. Restart Frontend Dev Server (REQUIRED)

cd frontend
npm start
# or if using Docker:
docker-compose restart frontend

Important: CSS changes in index.tsx require a full restart - hot reload won't work!

2. Clear Browser Cache

After restarting:

  • Hard refresh: Ctrl+Shift+R (Windows/Linux) or Cmd+Shift+R (Mac)
  • Or clear browser cache completely

3. Verify the Fix

Navigate to any admin page with the editor (e.g., /admin/articles):

  • You should see the rich text editor toolbar with formatting buttons
  • White text area should be visible
  • Editor should be fully functional with all controls

Technical Details

Why This Happened

Component-level CSS imports work differently depending on your build setup:

  • Webpack/CRACO may tree-shake or defer CSS that's imported in components
  • Third-party libraries like Quill expect their CSS to load before the component mounts
  • Global imports in index.tsx ensure CSS loads immediately at app startup

Best Practice

For critical third-party UI libraries (Quill, DatePicker, Crop tools, etc.), always import CSS globally in index.tsx rather than at the component level.

Files Modified

  1. frontend/src/index.tsx - Added global CSS imports
  2. frontend/src/components/common/CustomRichEditor.tsx - Removed duplicate imports
  3. DOCS/ADMIN_TROUBLESHOOTING.md - Added documentation

Testing Checklist

  • Restart frontend dev server
  • Clear browser cache
  • Test article creation - editor visible?
  • Test activity creation - editor visible?
  • Test about page editing - editor visible?
  • Test image upload in editor - working?
  • Test all formatting buttons - functional?

Status

FIXED - Changes applied and documented. Awaiting dev server restart and verification.