Commit 549dd73
feat: render field descriptions as sanitized HTML (#38)
* feat: render field descriptions as sanitized HTML
Replace the manual HTML-escaping + mini-markdown parser in FieldHelpText
with DOMPurify sanitization so admins can write raw HTML in field
descriptions. Only safe tags (a, p, br, strong, em, ul, ol, li, span,
code) and attributes (href, target, rel) are allowed. All links are
forced to target="_blank" with rel="noopener noreferrer".
Adds the field-description-html CSS class and Tailwind styles for links
and block-level element spacing (paragraphs, lists).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: use dedicated DOMPurify instance to avoid global side effects
Create a separate DOMPurify instance for FieldHelpText so the
afterSanitizeAttributes hook doesn't affect other DOMPurify consumers
(e.g. TeamRosterView).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>1 parent 6e653b1 commit 549dd73
2 files changed
Lines changed: 16 additions & 22 deletions
Lines changed: 2 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
255 | 255 | | |
256 | 256 | | |
257 | 257 | | |
258 | | - | |
| 258 | + | |
259 | 259 | | |
260 | 260 | | |
261 | 261 | | |
| |||
340 | 340 | | |
341 | 341 | | |
342 | 342 | | |
343 | | - | |
| 343 | + | |
344 | 344 | | |
345 | 345 | | |
346 | 346 | | |
| |||
Lines changed: 14 additions & 20 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
3 | 12 | | |
4 | 13 | | |
5 | 14 | | |
| |||
15 | 24 | | |
16 | 25 | | |
17 | 26 | | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | 27 | | |
25 | 28 | | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
39 | 33 | | |
40 | 34 | | |
41 | 35 | | |
| |||
90 | 84 | | |
91 | 85 | | |
92 | 86 | | |
93 | | - | |
| 87 | + | |
94 | 88 | | |
95 | 89 | | |
96 | 90 | | |
| |||
0 commit comments