saleor-dashboard/src/components/RichTextEditor/RichTextEditorContent.tsx
Michał Droń 347e32ef4a
Replace classnames with clsx (#2759)
* Replace classnames with clsx

* Add clsx to package.json

* Remove classnames

* Remove classnames types

* Restrict classnames in eslint rules
2022-12-02 11:45:19 +01:00

54 lines
1.3 KiB
TypeScript

import { LogLevels } from "@editorjs/editorjs";
import { useId } from "@reach/auto-id";
import clsx from "clsx";
import React from "react";
import { createReactEditorJS } from "react-editor-js";
import { tools } from "./consts";
import { useHasRendered } from "./hooks";
import { EditorJsProps } from "./RichTextEditor";
import useStyles from "./styles";
export interface RichTextEditorContentProps
extends Omit<EditorJsProps, "defaultValue"> {
id?: string;
className?: string;
}
const ReactEditorJS = createReactEditorJS();
const RichTextEditorContent: React.FC<RichTextEditorContentProps> = ({
id: defaultId,
className,
value,
...props
}) => {
const classes = useStyles({});
const id = useId(defaultId);
// We need to render FormControl first to get id from @reach/auto-id
const hasRendered = useHasRendered();
if (!hasRendered) {
return <div />;
}
return (
<ReactEditorJS
holder={id}
logLevel={"ERROR" as LogLevels.ERROR}
tools={tools}
{...props}
defaultValue={value}
readOnly={true}
>
<div
id={id}
className={clsx(classes.editor, classes.rootStatic, className)}
/>
</ReactEditorJS>
);
};
RichTextEditorContent.displayName = "RichTextEditorContent";
export default RichTextEditorContent;