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:
parent
3e8c2d4b6e
commit
124719c243
15 changed files with 93 additions and 39 deletions
|
@ -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>}
|
||||
|
|
|
@ -104,6 +104,7 @@
|
|||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 0 0 $radius $radius;
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
.backdrop {
|
||||
|
|
|
@ -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(() => {
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 && (
|
||||
<>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue