Skip to content

@memberjunction/ng-markdown

A feature-rich Angular component for rendering Markdown content with syntax highlighting, Mermaid diagrams, collapsible sections, GitHub-style alerts, and SVG rendering.

Terminal window
npm install @memberjunction/ng-markdown

The Markdown component replaces ngx-markdown with a MemberJunction-native implementation. It uses marked for parsing, Prism.js for syntax highlighting, and Mermaid for diagram rendering. The module does not use forRoot() — simply import MarkdownModule wherever needed.

flowchart LR
    subgraph Input["Markdown Source"]
        A["Raw Markdown String"]
    end
    subgraph Parser["Parsing Pipeline"]
        B["marked parser"]
        B --> C["marked-highlight (Prism.js)"]
        B --> D["marked-alert (GitHub alerts)"]
        B --> E["marked-smartypants (typography)"]
    end
    subgraph Render["Rendering"]
        C --> F["Syntax-highlighted code blocks"]
        D --> G["Alert blockquotes"]
        B --> H["Mermaid diagrams"]
        B --> I["SVG code blocks"]
    end

    A --> B

    style Input fill:#2d6a9f,stroke:#1a4971,color:#fff
    style Parser fill:#7c5295,stroke:#563a6b,color:#fff
    style Render fill:#2d8659,stroke:#1a5c3a,color:#fff
import { MarkdownModule } from '@memberjunction/ng-markdown';
@NgModule({
imports: [MarkdownModule] // No forRoot() needed
})
export class YourModule {}
<mj-markdown [data]="markdownContent"></mj-markdown>
<mj-markdown
[data]="content"
[enableMermaid]="true"
[enableCollapsibleHeadings]="true"
[collapsibleHeadingLevel]="2"
[autoExpandLevels]="[2]"
[enableCodeCopy]="true"
[enableAlerts]="true"
[enableSmartypants]="true"
[enableSvgRenderer]="true"
[enableHtml]="false"
[mermaidTheme]="'default'"
(rendered)="onRendered($event)"
(headingClick)="onHeadingClick($event)"
(codeCopied)="onCodeCopied($event)">
</mj-markdown>
FeatureDefaultDescription
Syntax highlightingEnabledPrism.js with Okaidia theme
Mermaid diagramsEnabledRender mermaid code blocks as diagrams
Code copy buttonEnabledCopy-to-clipboard on hover
GitHub-style alertsEnabled[!NOTE], [!TIP], [!WARNING] blockquotes
Smartypants typographyEnabledCurly quotes, em/en dashes, ellipsis
SVG renderingEnabledRender SVG code blocks as images
Collapsible headingsDisabledExpand/collapse heading sections
HTML passthroughDisabledRaw HTML rendering (security-sensitive)
JavaScriptDisabledAllow JS in HTML (use only for trusted content)
InputTypeDefaultDescription
datastring''Markdown content to render
enableHighlightbooleantruePrism.js syntax highlighting
enableMermaidbooleantrueMermaid diagram rendering
enableCodeCopybooleantrueCopy button on code blocks
enableCollapsibleHeadingsbooleanfalseCollapsible heading sections
collapsibleHeadingLevel1-62Heading level to start collapsing
collapsibleDefaultExpandedbooleantrueDefault expansion state
autoExpandLevelsnumber[]undefinedSpecific levels to auto-expand
enableAlertsbooleantrueGitHub-style alerts
enableSmartypantsbooleantrueTypography improvements
enableSvgRendererbooleantrueSVG code block rendering
enableHtmlbooleanfalseRaw HTML passthrough
enableJavaScriptbooleanfalseAllow JS in HTML
enableHeadingIdsbooleantrueGenerate heading IDs for anchors
headingIdPrefixstring''Prefix for heading IDs
enableLineNumbersbooleanfalseShow line numbers in code blocks
containerClassstring''Custom CSS class for container
mermaidThemestring'default'Mermaid theme (default/dark/forest/neutral/base)
sanitizebooleantrueSanitize HTML output
EventTypeDescription
renderedMarkdownRenderEventEmitted when rendering completes
headingClickHeadingInfoEmitted when a heading is clicked
codeCopiedstringEmitted when code is copied to clipboard
  1. Replace imports: 'ngx-markdown' to '@memberjunction/ng-markdown'
  2. Remove forRoot() from module imports
  3. Update selectors: <markdown> to <mj-markdown>
  4. The element property is preserved for backward compatibility
  • marked — Markdown parser
  • marked-alert — GitHub-style alerts
  • marked-highlight — Syntax highlighting integration
  • marked-smartypants — Typography improvements
  • prismjs — Syntax highlighting
  • mermaid — Diagram rendering