diff options
Diffstat (limited to 'frontend/src')
4 files changed, 33 insertions, 10 deletions
diff --git a/frontend/src/components/modals/Modal.js b/frontend/src/components/modals/Modal.js index b494d970..21b7f119 100644 --- a/frontend/src/components/modals/Modal.js +++ b/frontend/src/components/modals/Modal.js @@ -9,12 +9,14 @@ function Modal({ children, title, show, onSubmit, onCancel, submitButtonType, su const toggle = () => setModal(!modal) const cancel = () => { - toggle() - onCancel() + if (onCancel() !== false) { + toggle() + } } const submit = () => { - toggle() - onSubmit() + if (onSubmit() !== false) { + toggle() + } } return ( diff --git a/frontend/src/components/modals/custom-components/NewPortfolioModalComponent.js b/frontend/src/components/modals/custom-components/NewPortfolioModalComponent.js index 67646e2c..3c6b8724 100644 --- a/frontend/src/components/modals/custom-components/NewPortfolioModalComponent.js +++ b/frontend/src/components/modals/custom-components/NewPortfolioModalComponent.js @@ -5,15 +5,23 @@ import Modal from '../Modal' import { AVAILABLE_METRICS, METRIC_NAMES } from '../../../util/available-metrics' const NewPortfolioModalComponent = ({ show, callback }) => { + const form = useRef(null) const textInput = useRef(null) const repeatsInput = useRef(null) const metricCheckboxes = useRef({}) - const onSubmit = () => - callback(textInput.current.value, { - enabledMetrics: AVAILABLE_METRICS.filter((metric) => metricCheckboxes.current[metric].checked), - repeatsPerScenario: parseInt(repeatsInput.current.value), - }) + const onSubmit = () => { + if (form.current.reportValidity()) { + callback(textInput.current.value, { + enabledMetrics: AVAILABLE_METRICS.filter((metric) => metricCheckboxes.current[metric].checked), + repeatsPerScenario: parseInt(repeatsInput.current.value), + }) + + return true + } else { + return false + } + } const onCancel = () => callback(undefined) return ( @@ -23,6 +31,7 @@ const NewPortfolioModalComponent = ({ show, callback }) => { e.preventDefault() this.onSubmit() }} + innerRef={form} > <FormGroup> <Label for="name">Name</Label> diff --git a/frontend/src/components/modals/custom-components/NewScenarioModalComponent.js b/frontend/src/components/modals/custom-components/NewScenarioModalComponent.js index 631082a2..01a5719c 100644 --- a/frontend/src/components/modals/custom-components/NewScenarioModalComponent.js +++ b/frontend/src/components/modals/custom-components/NewScenarioModalComponent.js @@ -13,6 +13,7 @@ const NewScenarioModalComponent = ({ topologies, schedulers, }) => { + const form = useRef(null) const textInput = useRef(null) const traceSelect = useRef(null) const traceLoadInput = useRef(null) @@ -22,6 +23,9 @@ const NewScenarioModalComponent = ({ const schedulerSelect = useRef(null) const onSubmit = () => { + if (!form.current.reportValidity()) { + return false + } callback( textInput.current.value, currentPortfolioId, @@ -38,6 +42,7 @@ const NewScenarioModalComponent = ({ schedulerName: schedulerSelect.current.value, } ) + return true } const onCancel = () => { callback(undefined) @@ -50,6 +55,7 @@ const NewScenarioModalComponent = ({ e.preventDefault() onSubmit() }} + innerRef={form} > <FormGroup> <Label for="name">Name</Label> diff --git a/frontend/src/components/modals/custom-components/NewTopologyModalComponent.js b/frontend/src/components/modals/custom-components/NewTopologyModalComponent.js index b20ec13b..9fee8831 100644 --- a/frontend/src/components/modals/custom-components/NewTopologyModalComponent.js +++ b/frontend/src/components/modals/custom-components/NewTopologyModalComponent.js @@ -5,6 +5,7 @@ import Shapes from '../../../shapes' import Modal from '../Modal' const NewTopologyModalComponent = ({ show, onCreateTopology, onDuplicateTopology, onCancel, topologies }) => { + const form = useRef(null) const textInput = useRef(null) const originTopology = useRef(null) @@ -17,11 +18,15 @@ const NewTopologyModalComponent = ({ show, onCreateTopology, onDuplicateTopology } const onSubmit = () => { - if (originTopology.current.selectedIndex === 0) { + if (!form.current.reportValidity()) { + return false + } else if (originTopology.current.selectedIndex === 0) { onCreate() } else { onDuplicate() } + + return true } return ( @@ -31,6 +36,7 @@ const NewTopologyModalComponent = ({ show, onCreateTopology, onDuplicateTopology e.preventDefault() onSubmit() }} + innerRef={form} > <FormGroup> <Label for="name">Name</Label> |
