Presets
This content is not available in your language yet.
Los presets controlan tres cosas a la vez: el schema (qué nodos/marks permite el editor), la toolbar (qué botones se muestran), y la sanitización (qué HTML sobrevive al guardar/renderizar).
Comparación
Sección titulada «Comparación»| Preset | Nodos extra sobre base | Toolbar default | maxLength | Sanitización |
|---|---|---|---|---|
| comment | Solo base: paragraph, text, hardBreak, bold, italic, link | compact | 2 000 | Estricta |
| task | + listas (con ListStyle), task lists (checklists), blockquote, underline, strike, code | basic | 10 000 | Moderada |
| + heading(2–3), TextStyle, Color, TextAlign, ListStyle, variable | full | — | Email-safe | |
| document | + heading(1–4), hr, TextStyle, Color, variable, image (resizable, con fileId), task lists, tablas (resizable), YouTube, iframe (https-only), callouts, highlight multicolor, TextAlign, super/subscript, tipografía (fontSize/fontFamily/fontWeight/lineHeight/letterSpacing/indent), ListStyle | full | — | Moderada + img/tabla |
Toolbar por variante
Sección titulada «Toolbar por variante»Puedes sobreescribir la toolbar del preset con el prop toolbar:
| Variante | Botones |
|---|---|
none | Sin toolbar |
compact | bold, italic, link |
basic | bold, italic, underline, bulletList, orderedList, link |
full | dropdown de estilos, fuente y tamaño; bold, italic, underline, strike; color de texto y highlight; link, image, YouTube, iframe, tabla; alineación, interlineado, letter-spacing; list pickers (bullet/ordered/task) e indentación (−/+); blockquote, code block, hr; callout; undo, redo. Con el cursor dentro de una tabla se añaden los items contextuales de tabla. |
auto | Usa la toolbar default del preset |
<!-- Forzar toolbar completo en preset task --><co-rich-text-editor preset="task" toolbar="full"></co-rich-text-editor>Features (overrides por preset)
Sección titulada «Features (overrides por preset)»El prop features permite activar/desactivar capacidades sin cambiar de preset:
<!-- Activar imágenes en el preset task --><co-rich-text-editor preset="task" features='{"image": true}'></co-rich-text-editor>interface RichTextFeatures { mentions?: boolean; // Agrega MentionNode variables?: boolean; // Agrega VariableNode (default true en email/document) image?: boolean; // Agrega Image (default true en document) table?: boolean; // Tablas (default true en document) youtube?: boolean; // Embeds YouTube (default true en document) iframe?: boolean; // iframe genérico https-only (default true en document) callout?: boolean; // Bloques callout (default true en document) highlight?: boolean; // Resaltado multicolor (default true en document) textAlign?: boolean; codeBlock?: boolean; characterCount?: number; // Activa CharacterCount link?: boolean | { autolink?: boolean; openOnClick?: boolean; };}Cómo se construyen las extensiones
Sección titulada «Cómo se construyen las extensiones»getExtensions(preset, opts) sigue este orden:
StarterKit.configure(STARTERKIT_CONFIG[preset])— base con sub-extensiones on/offTextStyle+Colorsi email/documentListStyle(todos los presets salvo comment)CobaltTaskList+CobaltTaskItem(task/document)- Tipografía
FontSize/FontFamily/FontWeight/LineHeight/LetterSpacing/Indent+Superscript/Subscript(document) TextAlign(document/email)VariableNodesifeatures.variables(default on en email/document)MentionNodesifeatures.mentionsImage(resizable, con fileId) sifeatures.image(default on en document)Table+TableRow/TableCell/TableHeadersifeatures.table(default on en document)ResizableYoutubesifeatures.youtube(default on en document)IframeEmbedsifeatures.iframe(default on en document)CalloutNodesifeatures.calloutyHighlightmulticolor sifeatures.highlight(defaults en document)- UI-only (si
includeUiExtensions !== false):Placeholder,CharacterCount
Crear un nuevo preset
Sección titulada «Crear un nuevo preset»Para agregar un preset (ej. newsletter):
types.ts— agregar'newsletter'al tipoRichTextPresetpresets.ts— agregarSTARTERKIT_CONFIG.newsletter,PRESET_TOOLBAR.newsletter,PRESET_MAXLENGTH.newsletter, extras engetExtensionssanitizer.ts— agregarnewsletteraSANITIZE_CONFIGSco-rich-text-viewer.tsx— replicar whitelist en suALLOWED_TAGS/ALLOWED_ATTRlocal- Tests — agregar casos en
presets.test.tsysanitizer.test.ts