@nextcloud/vue-richtext

Vue component for rich content strings including markdown support.
9,829 9
Install
npm install @nextcloud/vue-richtext@2.0.4
Latest Version:2.0.4
Vue:2
License:AGPL-3.0
Last Updated:Sep 8, 2023
Links: GitHub  ·  npm
Maintainer: icewind1991

Vue component for rich content strings

npm last version Dependabot status

This library provides a simple vue component to render text with rich placeholder replacements. The parameters that are replaced can either be a string or an object that allows rendering any Vue component into the text. Placeholders are wrapped in brackets, like {placeholder}. Markdown can be used for basic text formatting.

Installation

npm install --save @nextcloud/vue-richtext

Usage

Importing the vue component

import { RichText } from '@nextcloud/vue-richtext'

Importing the shipped stylesheets

@import '@nextcloud/vue-richtext/dist/style.css';

Basic usage with simple text placeholders

  • Input string: The file {file} was added…
  • Arguments:
    • file: 'MyDocument'
  • Renders: The file 'MyDocument' was added…

Example usage:

<template>
	<RichText :text="text" :arguments="args" />
</template>

<script>
import RichText from '@nextcloud/vue-richtext'
import UserBubble from './UserBubble'

export default {
    name: 'RichTextDemo',
	components: {
		RichText,
	},
    data: () => {
        return {
            text: 'The file {file} was added by {username}',
            args: {
                file: 'MyDocument.odt',
                username: {
                    component: UserBubble,
                    props: {
                        user: 'Jane Doe'
                    }
                }
            }
        }
    }
}
</script>
UserBubble.vue
<template>
    <span class="user">{{ user }}</span>
</template>

<script>
export default {
	name: 'UserBubble',
	props: {
		user: {
			type: String,
			default: ''
		}
	}
}
</script>

<style scoped>
.user {
	border-radius: 3px;
	background-color: #eee;
	padding: 3px;
}
</style>

Usage with vue components

  • Input string: The file {file} was added by {username}
  • Arguments:
    • file: 'MyDocument'
    • username: { component: UserBubble, props: { username: 'Jane Doe' }
  • Renders: The file 'MyDocument' was added by <UserBubble>Jane Doe</UserBubble>

Usage with markdown

  • Input string: The **file** *{file}* was added by {username}
  • Arguments:
    • file: 'MyDocument'
    • username: { component: UserBubble, props: { username: 'Jane Doe' }
  • Renders: The <strong>file</strong> <i>'MyDocument'</i> was added by <UserBubble>Jane Doe</UserBubble>

Reference rendering

Documentation

A full example is shown in the documentation

Related Packages

markdown-it-mdc

Markdown Components (MDC) support for markdown-it

1,264,498 152
@cocoar/vue-markdown-core

Core markdown parsing utilities for @cocoar/vue-markdown

15,079 0
kokk

A beautiful way to create a documentation from markdown, and insert a vue compon...

10,142 49
vue-demarque

Content renderer for Vue

1,193 0
@bindr/bindr

(WIP) Convention-based Markdown documentation generator.

366 0

Version History

Version Released Vue License
2.0.4 ^2.7.8 AGPL-3.0
2.0.3 ^2.7.8 AGPL-3.0
2.0.2 ^2.7.8 AGPL-3.0
2.0.1 ^2.7.8 AGPL-3.0
2.0.0 ^2.7.8 AGPL-3.0
Pre-releases (7)
Version Released Vue License
2.1.0-beta.6 ^2.7.8 AGPL-3.0
2.1.0-beta.5 ^2.7.8 AGPL-3.0
2.1.0-beta.4 ^2.7.8 AGPL-3.0
2.1.0-beta.3 ^2.7.8 AGPL-3.0
2.1.0-beta.1 ^2.7.8 AGPL-3.0