Skip to main content

Rich text

Source@dopt/html-rich-text

Overview

The HTML rich text package is powered by a rich text field and is great for rendering complex content containing spacing, alignment, images, links, and more.

It matches rich text types you might find in traditional content management systems and can be helpful for adding custom in-product content.

You can use our utilities at @dopt/html-rich-text to render rich text fields directly to HTML.

Installation

npm install @dopt/html-rich-text

Usage

The default export from @dopt/html-rich-text is a function that you can use to render the contents of Dopt's rich text field to an HTML string.

<script>
import type { Children as RichText } from '@dopt/core-rich-text';
import RichText from '@dopt/html-rich-text';
import { useBlock } from '@dopt/vue';

const { field } = useBlock('my-flow.rich-content-block');
</script>
<template>
<div v-html="RichText({ content: field<RichText>('rich-body') })"></div>
</template>

Options

RichText

NameTypeDescription
content?RichTextThe rich text content for the component
noStyles?booleanDetermines if Dopt specified styles are rendered alongside rich text elements

Styling API

NameSelectorDescription
root.dopt-rich-textRoot element
node.dopt-rich-text__nodeAll nodes produced by rich text
text.dopt-rich-text__textText element
bold.dopt-rich-text__boldBolded text
italic.dopt-rich-text__italicItalicized text
underline.dopt-rich-text__underlineUnderlined text
bulletedList.dopt-rich-text__bulleted-listBulleted list
numberedList.dopt-rich-text__numbered-listNumbered list
listItem.dopt-rich-text__list-itemIndividual item
h1.dopt-rich-text__heading-oneHeading level 1
h2.dopt-rich-text__heading-twoHeading level 2
h3.dopt-rich-text__heading-threeHeading level 3
link.dopt-rich-text__linkLink
image.dopt-rich-text__imageImage
video.dopt-rich-text__videoVideo embed rendered within a video or iframe

Alignment

NameSelectorDescription
left.dopt-rich-text__node--align-leftLeft alignment
center.dopt-rich-text__node--align-centerCenter alignment
right.dopt-rich-text__node--align-rightRight alignment
justify.dopt-rich-text__node--align-justifyJustified alignment

Videos

If a video source is an embed URL from YouTube, Vimeo, Wistia, or Loom, it will be rendered in an iframe element instead of a video element.

Embed URLs must match the following formats for the embedded video to display properly via rich text.

VendorEmbed URL format
YouTubehttps://www.youtube.com/embed/abcdef
Vimeohttps://player.vimeo.com/video/abcdef
Wistiahttps://fast.wistia.net/embed/iframe/abcdef
Loomhttps://www.loom.com/embed/abcdef

Types

RichText

Rich text fields are made up of an array of elements each of which may have further properties including children.

@dopt/core-rich-text contains type and schema definitions for Dopt's rich text field.

Read the complete type definitions →