0.4.0 • Published 3 months ago

react-tiny-bbcode v0.4.0

Weekly downloads
1
License
MIT
Repository
-
Last release
3 months ago

react-tiny-bbcode

This aims to implement a simple, yet fully functional bbcode editor and parser for React.

Installation

npm install react-tiny-bbcode

Usage

Working example: https://codesandbox.io/s/react-tiny-bbcode-g4h94

Simplest usage

import React from 'react';
import {Editor} from "react-tiny-bbcode";

export function MyBBcodeEditorPage(props) {
  return (
    <Editor preview={true} />
  );    
}

More advanced usage

import React, { useState } from 'react';
import {Editor, Parser} from "react-tiny-bbcode";

export function MyBBcodeEditorPage(props) {
  const [bbcode, setBBcode] = useState();

  const update = (v) => {
    setBBcode(v);
  };

  return (
    <Editor
      onChange={update}
      button={{
        style: {
          paddingRight: 10,
          cursor: "pointer"
        }
      }}
      textarea={{
        style: {minWidth: 500, minHeight: 300}
      }}
    />
    <hr/>
    <Parser bbcode={bbcode} />
  );    
}

\<Editor> Component

ParameterTypeDescriptionDefault
onChangefunctionCustom function to run when clicked, where v is the bbcode string(v)=>{}
previewbooleanSet to true to automatically render a preview area below editorfalse
containerobjectprops that will be applied to the surrounding editor container{}
buttonContainerobjectprops that will be applied to the button container{}
buttonobjectprops that will be applied to each button{}
textareaobjectprops that will be applied to the editor edit area{}
buttonsarrayarray of button object to render, see below[...]

Buttons

The Editor comes with a few default buttons, but is easily expandable with custom buttons. Below is an example of a few buttons implemented.

const buttons = [
  {
    caption: "<b>B</b>",
    tag: "b"
  },
  {
    caption: "<i>I</i>",
    tag: "i",
  },
  {
    caption: "<u>U</u>",
    tag: "u"
  },
  {
    caption: "{}",
    tag: "code"
  },
  {
    caption: "<span style=\"color: red\">C</span><span style=\"color: green\">O</span><span style=\"color: blue\">L</span>",
    tag: "color",
    onClick: () => {
      return prompt("Enter color name or code in format ##rrggbb:");
    }
  },
  {
    caption: "Img",
    tag: "img",
    onClick: () => {
      return prompt("align left, right or stretch (leave empty for default):");
    }
  }
];

return (
  <Editor buttons={buttons} />
);

Contribute and build

Contribute to this repository by sending pull requests my way! All help is welcome!

Make sure you have webpack installed on your host machine.

npm run-script build

Use npm link to link to a local frontend react project to be able to modify and test immediately.

0.4.0

3 months ago

0.3.0

1 year ago

0.2.0

1 year ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago