diff --git a/ui/src/app/metadata/editor/MetadataEditor.js b/ui/src/app/metadata/editor/MetadataEditor.js index 80cb65016..03f68b6fd 100644 --- a/ui/src/app/metadata/editor/MetadataEditor.js +++ b/ui/src/app/metadata/editor/MetadataEditor.js @@ -52,7 +52,7 @@ export function MetadataEditor ({ current }) { const cancel = () => { setBlocking(false); - gotoDetail(); + setTimeout(() => gotoDetail()); }; const gotoDetail = (state = null) => { @@ -61,7 +61,13 @@ export function MetadataEditor ({ current }) { }; const onNavigate = (path) => { - history.push(path) + const resetBlock = blocking; + setBlocking(false); + setTimeout(() => { + history.push(path); + setBlocking(resetBlock); + }); + // setBlocking(resetBlock); }; const [blocking, setBlocking] = React.useState(false); diff --git a/ui/src/app/metadata/editor/MetadataEditorNav.js b/ui/src/app/metadata/editor/MetadataEditorNav.js index 5de8dab41..45b19ca1c 100644 --- a/ui/src/app/metadata/editor/MetadataEditorNav.js +++ b/ui/src/app/metadata/editor/MetadataEditorNav.js @@ -6,7 +6,7 @@ import Dropdown from 'react-bootstrap/Dropdown'; import Translate from '../../i18n/components/translate'; // import { usePagesWithErrors } from '../hoc/MetadataFormContext'; -export function MetadataEditorNav ({ definition, current, base, children, format = 'tabs', onNavigate }) { +export function MetadataEditorNav ({ definition, current, children, format = 'tabs', onNavigate }) { const [routes, setRoutes] = React.useState([]); const [active, setActive] = React.useState(null); diff --git a/ui/src/app/metadata/editor/MetadataFilterEditor.js b/ui/src/app/metadata/editor/MetadataFilterEditor.js index cea26cb27..3f2432b77 100644 --- a/ui/src/app/metadata/editor/MetadataFilterEditor.js +++ b/ui/src/app/metadata/editor/MetadataFilterEditor.js @@ -1,7 +1,7 @@ import React from 'react'; import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; -import { useHistory, useParams } from 'react-router'; +import { useParams } from 'react-router'; import Alert from 'react-bootstrap/Alert'; import Translate from '../../i18n/components/translate'; @@ -13,12 +13,11 @@ import { MetadataEditorNav } from './MetadataEditorNav'; import { useMetadataFilters } from '../hooks/api'; import { MetadataFilterContext } from '../hoc/MetadataFilterSelector'; -export function MetadataFilterEditor({children}) { +export function MetadataFilterEditor({children, onNavigate, block}) { const { id, section } = useParams(); const { data } = useMetadataFilters(id, {}, []); - const history = useHistory(); const definition = React.useContext(MetadataDefinitionContext); const schema = React.useContext(MetadataSchemaContext); const current = React.useContext(MetadataFilterContext); @@ -29,11 +28,7 @@ export function MetadataFilterEditor({children}) { const onChange = (changes) => { dispatch(setFormDataAction(changes.formData)); dispatch(setFormErrorAction(changes.errors)); - // setBlocking(true); - }; - - const onNavigate = (path) => { - history.push(path) + block(); }; const validator = definition.validator(data, current); diff --git a/ui/src/app/metadata/view/EditFilter.js b/ui/src/app/metadata/view/EditFilter.js index d5fd9f964..27d2a594c 100644 --- a/ui/src/app/metadata/view/EditFilter.js +++ b/ui/src/app/metadata/view/EditFilter.js @@ -20,7 +20,17 @@ export function EditFilter() { const [blocking, setBlocking] = React.useState(false); + const onNavigate = (path) => { + const resetBlock = blocking; + setBlocking(false); + setTimeout(() => { + history.push(path); + setBlocking(resetBlock); + }); + }; + function save(metadata) { + setBlocking(false); update(``, metadata).then(() => { gotoDetail({ refresh: true }); }).catch(() => { @@ -29,7 +39,8 @@ export function EditFilter() { }; const cancel = () => { - gotoDetail(); + setBlocking(false); + setTimeout(() => gotoDetail()); }; const gotoDetail = (state = null) => { @@ -60,7 +71,7 @@ export function EditFilter() {