From 1b6a81d27cbbb1e8299d16ea46c3c0a7d9f9ab94 Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Wed, 16 Oct 2019 16:22:01 +0700 Subject: [PATCH] sagas for node creation dialog --- src/components/bars/SubmitBar/index.tsx | 10 ++++--- src/components/editors/TextEditor/index.tsx | 27 +++++++++++++++++++ src/components/editors/TextEditor/styles.scss | 3 +++ .../editors/EditorDialogText/index.tsx | 10 +++++++ src/redux/modal/constants.ts | 11 +++++++- src/redux/modal/reducer.ts | 4 +-- src/redux/node/actions.ts | 17 +++++++++++- src/redux/node/constants.ts | 23 +++++++++++----- src/redux/node/handlers.ts | 5 ++++ src/redux/node/sagas.ts | 15 +++++++++-- src/redux/types.ts | 16 +++++++---- 11 files changed, 119 insertions(+), 22 deletions(-) create mode 100644 src/components/editors/TextEditor/index.tsx create mode 100644 src/components/editors/TextEditor/styles.scss create mode 100644 src/containers/editors/EditorDialogText/index.tsx diff --git a/src/components/bars/SubmitBar/index.tsx b/src/components/bars/SubmitBar/index.tsx index 0450787f..da44ab82 100644 --- a/src/components/bars/SubmitBar/index.tsx +++ b/src/components/bars/SubmitBar/index.tsx @@ -1,20 +1,22 @@ import React, { FC, useCallback } from 'react'; import { connect } from 'react-redux'; import { Icon } from '~/components/input/Icon'; -import * as MODAL_ACTIONS from '~/redux/modal/actions'; +import * as NODE_ACTIONS from '~/redux/node/actions'; import { DIALOGS } from '~/redux/modal/constants'; import * as styles from './styles.scss'; +import { NODE_TYPES } from '~/redux/node/constants'; const mapStateToProps = null; const mapDispatchToProps = { - showDialog: MODAL_ACTIONS.modalShowDialog, + nodeCreate: NODE_ACTIONS.nodeCreate, + // showDialog: MODAL_ACTIONS.modalShowDialog, }; type IProps = typeof mapDispatchToProps & {}; -const SubmitBarUnconnected: FC = ({ showDialog }) => { - const onOpenImageEditor = useCallback(() => showDialog(DIALOGS.EDITOR_IMAGE), [showDialog]); +const SubmitBarUnconnected: FC = ({ nodeCreate }) => { + const onOpenImageEditor = useCallback(() => nodeCreate(NODE_TYPES.IMAGE), [nodeCreate]); return (
diff --git a/src/components/editors/TextEditor/index.tsx b/src/components/editors/TextEditor/index.tsx new file mode 100644 index 00000000..539045f1 --- /dev/null +++ b/src/components/editors/TextEditor/index.tsx @@ -0,0 +1,27 @@ +import React, { FC, useCallback } from 'react'; +import { INode } from '~/redux/types'; +import * as styles from './styles.scss'; +import { Textarea } from '~/components/input/Textarea'; +import path from 'ramda/es/path'; + +interface IProps { + data: INode; + setData: (val: INode) => void; +} + +const TextEditor: FC = ({ data, setData }) => { + const setText = useCallback( + (text: string) => setData({ ...data, blocks: [{ type: 'text', text }] }), + [data, setData] + ); + + const text = (path(['blocks', 0, 'text'], data) as string) || ''; + + return ( +
+