From b0d4998662217f730ac4a9a5619673d32fc365cf Mon Sep 17 00:00:00 2001 From: CarinaWolli Date: Wed, 19 Oct 2022 18:43:58 +0200 Subject: [PATCH 01/43] add first version of text editor --- apps/web/package.json | 6 + .../ee/workflows/components/v2/TextEditor.tsx | 49 + .../components/v2/WorkflowStepContainer.tsx | 5 + .../ee/workflows/components/v2/styles.css | 2369 +++++++++++++++++ 4 files changed, 2429 insertions(+) create mode 100644 packages/features/ee/workflows/components/v2/TextEditor.tsx create mode 100644 packages/features/ee/workflows/components/v2/styles.css diff --git a/apps/web/package.json b/apps/web/package.json index 2210f395158849..2a2520b12b91d9 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -59,6 +59,9 @@ "@stripe/react-stripe-js": "^1.10.0", "@stripe/stripe-js": "^1.35.0", "@tanstack/react-query": "^4.3.9", + "@types/draftjs-to-html": "^0.8.1", + "@types/html-to-draftjs": "^1.4.0", + "@types/react-draft-wysiwyg": "^1.13.4", "@vercel/edge-functions-ui": "^0.2.1", "@wojtekmaj/react-daterange-picker": "^3.3.1", "accept-language-parser": "^1.5.0", @@ -66,6 +69,8 @@ "bcryptjs": "^2.4.3", "classnames": "^2.3.1", "dotenv-cli": "^6.0.0", + "draft-js": "^0.11.7", + "draftjs-to-html": "^0.9.1", "googleapis": "^84.0.0", "gray-matter": "^4.0.3", "handlebars": "^4.7.7", @@ -99,6 +104,7 @@ "react-date-picker": "^8.3.6", "react-digit-input": "^2.1.0", "react-dom": "^18.2.0", + "react-draft-wysiwyg": "^1.15.0", "react-easy-crop": "^3.5.2", "react-feather": "^2.0.10", "react-hook-form": "^7.34.2", diff --git a/packages/features/ee/workflows/components/v2/TextEditor.tsx b/packages/features/ee/workflows/components/v2/TextEditor.tsx new file mode 100644 index 00000000000000..42004db038ddd0 --- /dev/null +++ b/packages/features/ee/workflows/components/v2/TextEditor.tsx @@ -0,0 +1,49 @@ +import { EditorState, convertToRaw, ContentState } from "draft-js"; +import draftToHtml from "draftjs-to-html"; +import dynamic from "next/dynamic"; +import { useState } from "react"; +import { EditorProps } from "react-draft-wysiwyg"; + +import "./styles.css"; + +const Editor = dynamic(() => import("react-draft-wysiwyg").then((mod) => mod.Editor), { + ssr: false, +}); + +const htmlToDraft = typeof window === "object" && require("html-to-draftjs").default; + +function TextEditor() { + const html = "

Hey this editor rocks 😀

"; + + const contentBlock = htmlToDraft(html); + const contentState = ContentState.createFromBlockArray(contentBlock.contentBlocks); + + const [editorState, setEditorState] = useState(EditorState.createWithContent(contentState)); + + return ( +
+ + {/*