feat: add rich-text blockquote element, change quote node type to blockquote
This commit is contained in:
@@ -271,7 +271,7 @@ const serialize = (children) => children.map((node, i) => {
|
|||||||
{serialize(node.children)}
|
{serialize(node.children)}
|
||||||
</h6>
|
</h6>
|
||||||
);
|
);
|
||||||
case 'quote':
|
case 'blockquote':
|
||||||
return (
|
return (
|
||||||
<blockquote key={i}>
|
<blockquote key={i}>
|
||||||
{serialize(node.children)}
|
{serialize(node.children)}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ const serialize = (children: Children): React.ReactElement[] =>
|
|||||||
return <h5 key={i}>{serialize(node.children)}</h5>
|
return <h5 key={i}>{serialize(node.children)}</h5>
|
||||||
case 'h6':
|
case 'h6':
|
||||||
return <h6 key={i}>{serialize(node.children)}</h6>
|
return <h6 key={i}>{serialize(node.children)}</h6>
|
||||||
case 'quote':
|
case 'blockquote':
|
||||||
return <blockquote key={i}>{serialize(node.children)}</blockquote>
|
return <blockquote key={i}>{serialize(node.children)}</blockquote>
|
||||||
case 'ul':
|
case 'ul':
|
||||||
return <ul key={i}>{serialize(node.children)}</ul>
|
return <ul key={i}>{serialize(node.children)}</ul>
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ const serialize = (children: Children): React.ReactElement[] => children.map((no
|
|||||||
{serialize(node.children)}
|
{serialize(node.children)}
|
||||||
</h6>
|
</h6>
|
||||||
);
|
);
|
||||||
case 'quote':
|
case 'blockquote':
|
||||||
return (
|
return (
|
||||||
<blockquote key={i}>
|
<blockquote key={i}>
|
||||||
{serialize(node.children)}
|
{serialize(node.children)}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ const serialize = (children: Children): React.ReactElement[] =>
|
|||||||
return <h5 key={i}>{serialize(node.children)}</h5>
|
return <h5 key={i}>{serialize(node.children)}</h5>
|
||||||
case 'h6':
|
case 'h6':
|
||||||
return <h6 key={i}>{serialize(node.children)}</h6>
|
return <h6 key={i}>{serialize(node.children)}</h6>
|
||||||
case 'quote':
|
case 'blockquote':
|
||||||
return <blockquote key={i}>{serialize(node.children)}</blockquote>
|
return <blockquote key={i}>{serialize(node.children)}</blockquote>
|
||||||
case 'ul':
|
case 'ul':
|
||||||
return <ul key={i}>{serialize(node.children)}</ul>
|
return <ul key={i}>{serialize(node.children)}</ul>
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ const serialize = (children: Children): React.ReactElement[] =>
|
|||||||
return <h5 key={i}>{serialize(node.children)}</h5>
|
return <h5 key={i}>{serialize(node.children)}</h5>
|
||||||
case 'h6':
|
case 'h6':
|
||||||
return <h6 key={i}>{serialize(node.children)}</h6>
|
return <h6 key={i}>{serialize(node.children)}</h6>
|
||||||
case 'quote':
|
case 'blockquote':
|
||||||
return <blockquote key={i}>{serialize(node.children)}</blockquote>
|
return <blockquote key={i}>{serialize(node.children)}</blockquote>
|
||||||
case 'ul':
|
case 'ul':
|
||||||
return <ul key={i}>{serialize(node.children)}</ul>
|
return <ul key={i}>{serialize(node.children)}</ul>
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
@import '../../../../../../scss/styles.scss';
|
||||||
|
|
||||||
|
.rich-text-blockquote {
|
||||||
|
&[data-slate-node=element] {
|
||||||
|
margin: base(.625) 0;
|
||||||
|
padding-left: base(0.625);
|
||||||
|
border-left: 1px solid var(--theme-elevation-200);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import ElementButton from '../Button';
|
||||||
|
import BlockquoteIcon from '../../../../../icons/Blockquote';
|
||||||
|
|
||||||
|
import './index.scss';
|
||||||
|
|
||||||
|
const Blockquote = ({ attributes, children }) => (
|
||||||
|
<blockquote
|
||||||
|
className="rich-text-blockquote"
|
||||||
|
{...attributes}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</blockquote>
|
||||||
|
);
|
||||||
|
|
||||||
|
const blockquote = {
|
||||||
|
Button: () => (
|
||||||
|
<ElementButton format="blockquote">
|
||||||
|
<BlockquoteIcon />
|
||||||
|
</ElementButton>
|
||||||
|
),
|
||||||
|
Element: Blockquote,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default blockquote;
|
||||||
@@ -5,6 +5,7 @@ import h4 from './h4';
|
|||||||
import h5 from './h5';
|
import h5 from './h5';
|
||||||
import h6 from './h6';
|
import h6 from './h6';
|
||||||
import link from './link';
|
import link from './link';
|
||||||
|
import blockquote from './blockquote';
|
||||||
import ol from './ol';
|
import ol from './ol';
|
||||||
import ul from './ul';
|
import ul from './ul';
|
||||||
import li from './li';
|
import li from './li';
|
||||||
@@ -20,6 +21,7 @@ const elements = {
|
|||||||
h5,
|
h5,
|
||||||
h6,
|
h6,
|
||||||
link,
|
link,
|
||||||
|
blockquote,
|
||||||
ol,
|
ol,
|
||||||
ul,
|
ul,
|
||||||
li,
|
li,
|
||||||
|
|||||||
@@ -70,6 +70,10 @@ export const richTextToHTML = (content: unknown): string => {
|
|||||||
nodeHTML = `<h6>${richTextToHTML(node.children)}</h6>`;
|
nodeHTML = `<h6>${richTextToHTML(node.children)}</h6>`;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'blockquote':
|
||||||
|
nodeHTML = `<blockquote>${richTextToHTML(node.children)}</blockquote>`;
|
||||||
|
break;
|
||||||
|
|
||||||
case 'ul':
|
case 'ul':
|
||||||
nodeHTML = `<ul>${richTextToHTML(node.children)}</ul>`;
|
nodeHTML = `<ul>${richTextToHTML(node.children)}</ul>`;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user