1
0
Fork 0
mirror of https://github.com/muerwre/vault-frontend.git synced 2025-04-25 04:46:40 +07:00

started editor

This commit is contained in:
muerwre 2019-08-06 18:55:19 +07:00
parent 203791b170
commit ee17b72a7f
4 changed files with 49 additions and 13 deletions

View file

@ -0,0 +1,15 @@
import React, { FC } from 'react';
import { INode } from '~/redux/types';
import * as styles from './styles.scss';
interface IProps {
data: INode,
setData: (val: INode) => void;
};
const ImageEditor: FC<IProps> = ({
}) => (
<div className={styles.uploads} />
)
export { ImageEditor };

View file

@ -0,0 +1,3 @@
.uploads {
min-height: 200px;
}

View file

@ -1,4 +1,4 @@
import React, { FC } from 'react'; import React, { FC, useState, useCallback } from 'react';
import { ScrollDialog } from '../ScrollDialog'; import { ScrollDialog } from '../ScrollDialog';
import { IDialogProps } from '~/redux/modal/constants'; import { IDialogProps } from '~/redux/modal/constants';
import { useCloseOnEscape } from '~/utils/hooks'; import { useCloseOnEscape } from '~/utils/hooks';
@ -6,22 +6,26 @@ import { Group } from '~/components/containers/Group';
import { InputText } from '~/components/input/InputText'; import { InputText } from '~/components/input/InputText';
import { Button } from '../../../components/input/Button/index'; import { Button } from '../../../components/input/Button/index';
import { Padder } from '~/components/containers/Padder'; import { Padder } from '~/components/containers/Padder';
import * as styles from '~/containers/examples/HorizontalExample/styles.scss'; import * as styles from './styles.scss';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { selectNode } from '~/redux/node/selectors'; import { selectNode } from '~/redux/node/selectors';
import { ImageEditor } from '~/components/editors/ImageEditor';
const mapStateToProps = selectNode; const mapStateToProps = selectNode;
const mapDispatchToProps = {}; const mapDispatchToProps = {};
type IProps = IDialogProps & {}; type IProps = IDialogProps & ReturnType<typeof mapStateToProps> & typeof mapDispatchToProps & {};
const EditorDialogUnconnected: FC<IProps> = ({ onRequestClose }) => { const EditorDialogUnconnected: FC<IProps> = ({ onRequestClose, editor }) => {
const title = <div>title</div>; const [data, setData] = useState(editor);
const setTitle = useCallback(title => {
setData({ ...data, title });
}, [setData, data]);
const buttons = ( const buttons = (
<Padder> <Padder>
<Group horizontal> <Group horizontal>
<InputText title="Название" /> <InputText title="Название" value={data.title} handler={setTitle} />
<Button title="Сохранить" iconRight="check" /> <Button title="Сохранить" iconRight="check" />
</Group> </Group>
@ -32,13 +36,11 @@ const EditorDialogUnconnected: FC<IProps> = ({ onRequestClose }) => {
return ( return (
<ScrollDialog buttons={buttons} width={860}> <ScrollDialog buttons={buttons} width={860}>
<div className={styles.uploads}> <div className={styles.editor}>
<div className={styles.cell} /> <ImageEditor
<div className={styles.cell} /> data={data}
<div className={styles.cell} /> setData={setData}
<div className={styles.cell} /> />
<div className={styles.cell} />
<div className={styles.cell} />
</div> </div>
</ScrollDialog> </ScrollDialog>
); );

View file

@ -0,0 +1,16 @@
.editor {
flex: 1;
padding: $gap;
// padding-bottom: 0;
display: grid;
align-items: center;
justify-content: center;
grid-column-gap: $gap;
grid-row-gap: $gap;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
@media (max-width: 600px) {
grid-template-columns: repeat(auto-fill, minmax(30vw, 1fr));
}
}