Skip to content

Conversation

@Frenzy-code
Copy link

Proposed Changes

  • Replaced the previous HTML-based description input editor with a new, reusable MarkdownEditor component.
  • Switched the markdown rendering engine to markdown-to-jsx.
  • Implemented strict component overrides within the MarkdownEditor to enforce the those formatting rules:
  • Allowed: b, strong, em, i, ul, ol, and p.
  • Blocked: All heading levels h1-h6 and link tags a.
  • Updated the data models and submission logic in ExerciseDetailEdit.tsx and the Add wizard (Step3Description.tsx):
  • Reads: The editor now initializes from exerciseTranslation.descriptionSource (Markdown source) or falls back to description (legacy HTML).
  • Writes: The component sends the user's input to the new descriptionSource field in the API payload, completing the migration path established in the backend.

Related Issue(s)

Please check that the PR fulfills these requirements

  • Tests for the changes have been added (for bug fixes / features)

Mannai added 4 commits December 10, 2025 06:32
- Add  dependency.
- Update  model and  to include .
- Update  services (, ) to send  payload to the backend.
- Create reusable  component in  with write/preview tabs and a strict tag whitelist (p, strong, em, ul, ol, li).
- Replace the standard text area in  with the new .
- Update Formik logic to bind to  for the API payload.
- Implement fallback logic to display legacy HTML description if no Markdown source exists.
- Remove  form component usage in the edit view.
…UI integration

- Address persistent Jest  by switching from the problematic  library to the CJS-compatible .
- Implement component overrides in  to strictly block disallowed tags (H1-H6, links) and enforce the required basic formatting whitelist (p, strong, ul, ol, li).
- Fix minor test logic error in  to ensure accurate assertion of the new component's behavior.
- Replaced  with  to resolve persistent Jest/CJS SyntaxErrors
- Implemented strict element stripping in MarkdownEditor: allowed only simple tags and the rest (h1-h6, a, img) are now rendered as plain text & spans.
- Resolved errors in  and .
- Updated  to align with the backend schema.
- Increased Jest global timeout to 15s in package.json to try to limit flaky timeouts when testing.
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.

1 participant