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

#58 fixed dialog routers

This commit is contained in:
Fedor Katurov 2021-03-29 17:45:54 +07:00
parent 3e8c2d4b6e
commit 124719c243
15 changed files with 93 additions and 39 deletions

View file

@ -40,8 +40,6 @@ const BetterScrollDialog: FC<IProps> = ({
return () => clearAllBodyScrollLocks();
}, [ref]);
useCloseOnEscape(onClose);
return (
<div className={styles.wrap} ref={ref}>
{backdrop && <div className={styles.backdrop}>{backdrop}</div>}

View file

@ -104,6 +104,7 @@
align-items: center;
justify-content: center;
border-radius: 0 0 $radius $radius;
z-index: 11;
}
.backdrop {

View file

@ -12,7 +12,7 @@ const EditorCreateDialog: FC = () => {
} = useRouteMatch<{ type: string }>();
const backUrl = useMemo(() => {
return url.replace(/\/create\/(.*)$/, '');
return (url && url.replace(/\/create\/(.*)$/, '')) || '/';
}, [url]);
const goBack = useCallback(() => {

View file

@ -1,4 +1,4 @@
import React, { createElement, FC, useCallback, useMemo } from 'react';
import React, { createElement, FC, useCallback, useEffect, useMemo } from 'react';
import { IDialogProps } from '~/redux/modal/constants';
import styles from './styles.module.scss';
import { NODE_EDITORS } from '~/redux/node/constants';
@ -12,26 +12,40 @@ import { UPLOAD_SUBJECTS, UPLOAD_TARGETS } from '~/redux/uploads/constants';
import { FormikProvider } from 'formik';
import { INode } from '~/redux/types';
import { ModalWrapper } from '~/components/dialogs/ModalWrapper';
import { useTranslatedError } from '~/utils/hooks/useTranslatedError';
import { useCloseOnEscape } from '~/utils/hooks';
interface Props extends IDialogProps {
node: INode;
}
const EditorDialog: FC<Props> = ({ node, onRequestClose }) => {
const uploader = useFileUploader(UPLOAD_SUBJECTS.EDITOR, UPLOAD_TARGETS.NODES, []);
const uploader = useFileUploader(UPLOAD_SUBJECTS.EDITOR, UPLOAD_TARGETS.NODES, node.files);
const formik = useNodeFormFormik(node, uploader, onRequestClose);
const { values, handleSubmit, dirty } = formik;
const { values, handleSubmit, dirty, status, setStatus } = formik;
const component = useMemo(() => node.type && prop(node.type, NODE_EDITORS), [node.type]);
const onClose = useCallback(() => {
if (!window.confirm('Точно выйти?')) {
return;
return undefined;
}
onRequestClose();
}, [onRequestClose, dirty]);
const error = useTranslatedError(status);
useEffect(() => {
if (!status) {
return;
}
setStatus('');
}, [values]);
useCloseOnEscape(onClose);
if (!component) {
return null;
}
@ -45,7 +59,7 @@ const EditorDialog: FC<Props> = ({ node, onRequestClose }) => {
footer={<EditorButtons />}
backdrop={<CoverBackdrop cover={values.cover} />}
width={860}
error=""
error={error}
onClose={onClose}
>
<div className={styles.editor}>{createElement(component)}</div>

View file

@ -9,7 +9,7 @@ import styles from './styles.module.scss';
const EditorEditDialog: FC = () => {
const [data, setData] = useState(EMPTY_NODE);
const [isLoading, setLoading] = useState(false);
const [isLoading, setLoading] = useState(true);
const history = useHistory();
const {

View file

@ -18,11 +18,11 @@ const MainRouter: FC<IProps> = () => {
return (
<Switch location={location}>
<Route exact path={URLS.BASE} component={FlowLayout} />
<Route path={URLS.NODE_URL(':id')} component={NodeLayout} />
<Route path={URLS.BORIS} component={BorisLayout} />
<Route path={URLS.ERRORS.NOT_FOUND} component={ErrorNotFound} />
<Route path={URLS.PROFILE_PAGE(':username')} component={ProfilePage} />
<Route path={URLS.BASE} component={FlowLayout} />
{is_user && (
<>