Commit 8cd76da4 by Рамис

add tools type

parent ab53f5b3
...@@ -9,7 +9,7 @@ const App = () => { ...@@ -9,7 +9,7 @@ const App = () => {
<QEditor <QEditor
value={'<p>Магма покрывает биотит. Деградация мерзлоты изменяет меандр, в тоже время поднимаясь в пределах горстов до абсолютных высот 250 м. Количество пирокластического материала в связи с преобладанием карьерной разработки ископаемых прекращает фирновый гетит. Синеклиза косвенно пододвигается под кряж, что лишь подтверждает то, что породные отвалы располагаются на склонах.</p>\n' + value={'<p>Магма покрывает биотит. Деградация мерзлоты изменяет меандр, в тоже время поднимаясь в пределах горстов до абсолютных высот 250 м. Количество пирокластического материала в связи с преобладанием карьерной разработки ископаемых прекращает фирновый гетит. Синеклиза косвенно пододвигается под кряж, что лишь подтверждает то, что породные отвалы располагаются на склонах.</p>\n' +
'<p>Можно ожидать, что мергель опускает флювиогляциальный ортоклаз. Колонны могут образоваться после того, как брекчия длительно прекращает флювиогляциальный батолит. Габбро слагает оз, делая этот типологический таксон районирования носителем важнейших инженерно-геологических характеристик природных условий. Кайнозой обеднен. Извержение спорадически ослабляет днепровский рифт. Оттаивание пород, из которого на 50% состоит руда месторождения, неоднозначно переоткладывает железистый биотит.</p>\n' + '<p>Можно ожидать, что мергель опускает флювиогляциальный ортоклаз. Колонны могут образоваться после того, как брекчия длительно прекращает флювиогляциальный батолит. Габбро слагает оз, делая этот типологический таксон районирования носителем важнейших инженерно-геологических характеристик природных условий. Кайнозой обеднен. Извержение спорадически ослабляет днепровский рифт. Оттаивание пород, из которого на 50% состоит руда месторождения, неоднозначно переоткладывает железистый биотит.</p>\n' +
'<p>Зандровое поле, особенно в верхах разреза, постоянно разогревает кристаллический грунт, что в конце концов приведет к полному разрушению хребта под действием собственного веса. Большое значение для формирования химического состава грунтовых и пластовых вод имеет выклинивание стягивает гидротермальный базальтовый слой. Сель, используя геологические данные нового типа, сдвигает днепровский блеск.</p>'} '<p>Зандровое поле, особенно в верхах разреза, постоянно разогревает кристаллический грунт, что в конце концов приведет к полному разрушению хребта под действием собственного веса. Большое значение для формирования химического состава грунтовых и пластовых вод имеет выклинивание стягивает гидротермальный базальтовый слой. Сель, используя геологические данные нового типа, сдвигает днепровский блеск.</p><span class="math" data-content="c = \pm\sqrt{a^2 + b^2}"></span>'}
onChange={(value)=>{ onChange={(value)=>{
console.log('sads', value); console.log('sads', value);
}} }}
...@@ -21,6 +21,9 @@ const App = () => { ...@@ -21,6 +21,9 @@ const App = () => {
maxWidth: '830px', maxWidth: '830px',
margin: '20px 20px 20px 100px', margin: '20px 20px 20px 100px',
}} }}
toolsOptions={{
type: 'text'
}}
/> />
</div> </div>
} }
......
{ {
"name": "react-ag-qeditor", "name": "react-ag-qeditor",
"version": "1.0.15", "version": "1.0.17",
"description": "WYSIWYG html editor", "description": "WYSIWYG html editor",
"author": "atma", "author": "atma",
"license": "MIT", "license": "MIT",
......
...@@ -28,7 +28,7 @@ import CustomLink from './extensions/CustomLink' ...@@ -28,7 +28,7 @@ import CustomLink from './extensions/CustomLink'
const initialBubbleItems = ['bold', 'italic', 'underline', 'strike', '|', 'colorText', 'highlight']; const initialBubbleItems = ['bold', 'italic', 'underline', 'strike', '|', 'colorText', 'highlight'];
const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions }) => { const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions, toolsOptions = { type: 'all' } }) => {
const [innerModalType, setInnerModalType] = useState(null); const [innerModalType, setInnerModalType] = useState(null);
const [embedContent, setEmbedContent] = useState(''); const [embedContent, setEmbedContent] = useState('');
const [uploaderUid, setUploaderUid] = useState('uid' + new Date()); const [uploaderUid, setUploaderUid] = useState('uid' + new Date());
...@@ -474,7 +474,9 @@ const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions }) => { ...@@ -474,7 +474,9 @@ const QEditor = ({ value, onChange = ()=>{}, style, uploadOptions }) => {
<div className="atma-editor"> <div className="atma-editor">
<ToolBar <ToolBar
editor={editor} editor={editor}
{...{toolsOptions}}
{...{toolsLib}} {...{toolsLib}}
/> />
<BubbleMenu typpyOptions={{followCursor: true,}} editor={editor} shouldShow={({...o}) => { <BubbleMenu typpyOptions={{followCursor: true,}} editor={editor} shouldShow={({...o}) => {
let items = []; let items = [];
......
import React, { Fragment, useState } from 'react'; import React, { Fragment, useState } from 'react';
const ToolBar = ({ editor, toolsLib = [] }) => {
if (!editor) {
return null
}
const [toolbarItems, setToolbarItems ] = useState([ const toolsInit = {
'all': [
{ {
type: 'g', type: 'g',
items: [ items: [
...@@ -81,7 +78,61 @@ const ToolBar = ({ editor, toolsLib = [] }) => { ...@@ -81,7 +78,61 @@ const ToolBar = ({ editor, toolsLib = [] }) => {
'deleteTable' 'deleteTable'
] ]
} }
]) ],
'text': [
{
type: 'g',
items: [
'undo',
'redo'
]
},
{
type: 's',
toggle: true,
items: [
'paragraph',
'h2',
'h3',
'h4'
]
},
{
type: 'g',
items: [
'bulletList',
'orderedList',
'blockquote',
'codeBlock',
'hr',
]
},
{
type: 's',
toggle: true,
items: [
'alignLeft',
'alignCenter',
'alignRight',
]
},
{
type: 'g',
items: [
'clearMarks',
'hardBreak',
]
},
]
}
const ToolBar = ({ editor, toolsLib = [], toolsOptions }) => {
if (!editor) {
return null
}
const [toolbarItems, setToolbarItems ] = useState((toolsOptions && toolsOptions.type ? toolsInit[toolsOptions.type] : toolsInit['all']))
const isActive = (type) => { const isActive = (type) => {
if(type === 'h2' || type === 'h3' || type === 'h4'){ if(type === 'h2' || type === 'h3' || type === 'h4'){
...@@ -140,6 +191,7 @@ const ToolBar = ({ editor, toolsLib = [] }) => { ...@@ -140,6 +191,7 @@ const ToolBar = ({ editor, toolsLib = [] }) => {
return false; return false;
}} }}
className={`atma-editor-toolbar-s-opts-item` + (isActive(type) ? ' active' : '' ) + (isDisabled(type) ? ' disabled' : '')} className={`atma-editor-toolbar-s-opts-item` + (isActive(type) ? ' active' : '' ) + (isDisabled(type) ? ' disabled' : '')}
data-type={type}
> >
<Fragment> <Fragment>
<div className={`qicon q${type}`} /> <div className={`qicon q${type}`} />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment