File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import { ModeledMethod } from "../modeled-method" ;
2+
3+ export function canAddNewModeledMethod (
4+ modeledMethods : ModeledMethod [ ] ,
5+ ) : boolean {
6+ // Disallow adding methods when there are no modeled methods or where there is a single unmodeled method.
7+ // In both of these cases the UI will already be showing the user inputs they can use for modeling.
8+ return (
9+ modeledMethods . length > 1 ||
10+ ( modeledMethods . length === 1 && modeledMethods [ 0 ] . type !== "none" )
11+ ) ;
12+ }
13+
14+ export function canRemoveModeledMethod (
15+ modeledMethods : ModeledMethod [ ] ,
16+ ) : boolean {
17+ // Don't allow removing the last modeled method. In this case the user is intended to
18+ // set the type to "none" instead.
19+ return modeledMethods . length > 1 ;
20+ }
Original file line number Diff line number Diff line change @@ -2,6 +2,10 @@ import * as React from "react";
22import { useCallback , useMemo , useState } from "react" ;
33import { Method } from "../../model-editor/method" ;
44import { ModeledMethod } from "../../model-editor/modeled-method" ;
5+ import {
6+ canAddNewModeledMethod ,
7+ canRemoveModeledMethod ,
8+ } from "../../model-editor/shared/multiple-modeled-methods" ;
59import { styled } from "styled-components" ;
610import { MethodModelingInputs } from "./MethodModelingInputs" ;
711import { VSCodeButton } from "@vscode/webview-ui-toolkit/react" ;
@@ -171,18 +175,15 @@ export const MultipleModeledMethodsPanel = ({
171175 appearance = "icon"
172176 aria-label = "Delete modeling"
173177 onClick = { handleRemoveClick }
174- disabled = { modeledMethods . length < 2 }
178+ disabled = { ! canRemoveModeledMethod ( modeledMethods ) }
175179 >
176180 < Codicon name = "trash" />
177181 </ VSCodeButton >
178182 < VSCodeButton
179183 appearance = "icon"
180184 aria-label = "Add modeling"
181185 onClick = { handleAddClick }
182- disabled = {
183- modeledMethods . length === 0 ||
184- ( modeledMethods . length === 1 && modeledMethods [ 0 ] . type === "none" )
185- }
186+ disabled = { ! canAddNewModeledMethod ( modeledMethods ) }
186187 >
187188 < Codicon name = "add" />
188189 </ VSCodeButton >
You can’t perform that action at this time.
0 commit comments