Merge pull request #3059 from github/charisk/accepted-models

Differentiate between suggestions and accepted models
This commit is contained in:
Charis Kyriakou
2023-11-10 10:25:28 +00:00
committed by GitHub
17 changed files with 150 additions and 15 deletions

View File

@@ -1,4 +1,5 @@
import { MethodSignature } from "./method";
import { ModelingStatus } from "./shared/modeling-status";
export type ModeledMethodType =
| "none"
@@ -109,3 +110,19 @@ export function modeledMethodSupportsProvenance(
modeledMethod.type === "neutral"
);
}
export function isModelAccepted(
modeledMethod: ModeledMethod | undefined,
modelingStatus: ModelingStatus,
): boolean {
if (!modeledMethod) {
return true;
}
return (
modelingStatus !== "unsaved" ||
modeledMethod.type === "none" ||
!modeledMethodSupportsProvenance(modeledMethod) ||
modeledMethod.provenance !== "ai-generated"
);
}

View File

@@ -52,8 +52,8 @@ MultipleModelingsUnmodeled.args = {
language,
method,
modeledMethods: [],
showMultipleModels: true,
modelingStatus: "saved",
showMultipleModels: true,
};
export const MultipleModelingsModeledSingle = Template.bind({});
@@ -61,8 +61,8 @@ MultipleModelingsModeledSingle.args = {
language,
method,
modeledMethods: [createSinkModeledMethod(method)],
showMultipleModels: true,
modelingStatus: "saved",
showMultipleModels: true,
};
export const MultipleModelingsModeledMultiple = Template.bind({});
@@ -78,8 +78,8 @@ MultipleModelingsModeledMultiple.args = {
kind: "remote",
}),
],
showMultipleModels: true,
modelingStatus: "saved",
showMultipleModels: true,
};
export const MultipleModelingsValidationFailedNeutral = Template.bind({});
@@ -90,8 +90,8 @@ MultipleModelingsValidationFailedNeutral.args = {
createSinkModeledMethod(method),
createNeutralModeledMethod(method),
],
showMultipleModels: true,
modelingStatus: "unsaved",
showMultipleModels: true,
};
export const MultipleModelingsValidationFailedDuplicate = Template.bind({});
@@ -107,6 +107,6 @@ MultipleModelingsValidationFailedDuplicate.args = {
}),
createSinkModeledMethod(method),
],
showMultipleModels: true,
modelingStatus: "unsaved",
showMultipleModels: true,
};

View File

@@ -60,3 +60,13 @@ ModelingInProgress.args = {
modeledMethod,
isModelingInProgress: true,
};
const generatedModeledMethod = createSinkModeledMethod({
provenance: "ai-generated",
});
export const ModelingNotAccepted = Template.bind({});
ModelingNotAccepted.args = {
method,
modeledMethod: generatedModeledMethod,
modelingStatus: "unsaved",
};

View File

@@ -85,6 +85,7 @@ export const MethodModeling = ({
modeledMethods={modeledMethods}
showMultipleModels={showMultipleModels}
isModelingInProgress={isModelingInProgress}
modelingStatus={modelingStatus}
onChange={onChange}
/>
<ReviewInEditorButton method={method} />

View File

@@ -8,6 +8,7 @@ import { ModelOutputDropdown } from "../model-editor/ModelOutputDropdown";
import { ModelKindDropdown } from "../model-editor/ModelKindDropdown";
import { InProgressDropdown } from "../model-editor/InProgressDropdown";
import { QueryLanguage } from "../../common/query-language";
import { ModelingStatus } from "../../model-editor/shared/modeling-status";
const Container = styled.div`
padding-top: 0.5rem;
@@ -27,6 +28,7 @@ export type MethodModelingInputsProps = {
language: QueryLanguage;
method: Method;
modeledMethod: ModeledMethod | undefined;
modelingStatus: ModelingStatus;
isModelingInProgress: boolean;
onChange: (modeledMethod: ModeledMethod) => void;
};
@@ -35,6 +37,7 @@ export const MethodModelingInputs = ({
language,
method,
modeledMethod,
modelingStatus,
isModelingInProgress,
onChange,
}: MethodModelingInputsProps): JSX.Element => {
@@ -42,6 +45,7 @@ export const MethodModelingInputs = ({
language,
method,
modeledMethod,
modelingStatus,
onChange,
};

View File

@@ -7,11 +7,13 @@ import { styled } from "styled-components";
import { MultipleModeledMethodsPanel } from "./MultipleModeledMethodsPanel";
import { convertToLegacyModeledMethod } from "../../model-editor/shared/modeled-methods-legacy";
import { QueryLanguage } from "../../common/query-language";
import { ModelingStatus } from "../../model-editor/shared/modeling-status";
export type ModeledMethodsPanelProps = {
language: QueryLanguage;
method: Method;
modeledMethods: ModeledMethod[];
modelingStatus: ModelingStatus;
isModelingInProgress: boolean;
showMultipleModels: boolean;
onChange: (methodSignature: string, modeledMethods: ModeledMethod[]) => void;
@@ -25,6 +27,7 @@ export const ModeledMethodsPanel = ({
language,
method,
modeledMethods,
modelingStatus,
isModelingInProgress,
showMultipleModels,
onChange,
@@ -42,6 +45,7 @@ export const ModeledMethodsPanel = ({
language={language}
method={method}
modeledMethod={convertToLegacyModeledMethod(modeledMethods)}
modelingStatus={modelingStatus}
isModelingInProgress={isModelingInProgress}
onChange={handleSingleChange}
/>
@@ -53,6 +57,7 @@ export const ModeledMethodsPanel = ({
language={language}
method={method}
modeledMethods={modeledMethods}
modelingStatus={modelingStatus}
isModelingInProgress={isModelingInProgress}
onChange={onChange}
/>

View File

@@ -15,11 +15,13 @@ import { ModeledMethodAlert } from "./ModeledMethodAlert";
import { QueryLanguage } from "../../common/query-language";
import { createEmptyModeledMethod } from "../../model-editor/modeled-method-empty";
import { sendTelemetry } from "../common/telemetry";
import { ModelingStatus } from "../../model-editor/shared/modeling-status";
export type MultipleModeledMethodsPanelProps = {
language: QueryLanguage;
method: Method;
modeledMethods: ModeledMethod[];
modelingStatus: ModelingStatus;
isModelingInProgress: boolean;
onChange: (methodSignature: string, modeledMethods: ModeledMethod[]) => void;
};
@@ -60,6 +62,7 @@ export const MultipleModeledMethodsPanel = ({
language,
method,
modeledMethods,
modelingStatus,
isModelingInProgress,
onChange,
}: MultipleModeledMethodsPanelProps) => {
@@ -154,6 +157,7 @@ export const MultipleModeledMethodsPanel = ({
language={language}
method={method}
modeledMethod={modeledMethods[selectedIndex]}
modelingStatus={modelingStatus}
isModelingInProgress={isModelingInProgress}
onChange={handleChange}
/>
@@ -162,6 +166,7 @@ export const MultipleModeledMethodsPanel = ({
language={language}
method={method}
modeledMethod={undefined}
modelingStatus={modelingStatus}
isModelingInProgress={isModelingInProgress}
onChange={handleChange}
/>

View File

@@ -20,6 +20,7 @@ describe(MethodModelingInputs.name, () => {
const language = QueryLanguage.Java;
const method = createMethod();
const modeledMethod = createSinkModeledMethod();
const modelingStatus = "unmodeled";
const isModelingInProgress = false;
const onChange = jest.fn();
@@ -28,6 +29,7 @@ describe(MethodModelingInputs.name, () => {
language,
method,
modeledMethod,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -54,6 +56,7 @@ describe(MethodModelingInputs.name, () => {
language,
method,
modeledMethod,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -76,6 +79,7 @@ describe(MethodModelingInputs.name, () => {
language,
method,
modeledMethod,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -90,6 +94,7 @@ describe(MethodModelingInputs.name, () => {
language={language}
method={method}
modeledMethod={updatedModeledMethod}
modelingStatus={modelingStatus}
isModelingInProgress={isModelingInProgress}
onChange={onChange}
/>,
@@ -119,6 +124,7 @@ describe(MethodModelingInputs.name, () => {
language,
method,
modeledMethod,
modelingStatus,
isModelingInProgress: true,
onChange,
});

View File

@@ -15,6 +15,7 @@ describe(ModeledMethodsPanel.name, () => {
const language = QueryLanguage.Java;
const method = createMethod();
const modeledMethods = [createSinkModeledMethod(), createSinkModeledMethod()];
const modelingStatus = "unmodeled";
const isModelingInProgress = false;
const onChange = jest.fn();
@@ -27,6 +28,7 @@ describe(ModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
showMultipleModels,
});
@@ -40,6 +42,7 @@ describe(ModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
showMultipleModels,
});
@@ -60,6 +63,7 @@ describe(ModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
showMultipleModels,
});
@@ -73,6 +77,7 @@ describe(ModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
showMultipleModels,
});

View File

@@ -21,6 +21,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
const language = QueryLanguage.Java;
const method = createMethod();
const isModelingInProgress = false;
const modelingStatus = "unmodeled";
const onChange = jest.fn<void, [string, ModeledMethod[]]>();
describe("with no modeled methods", () => {
@@ -31,6 +32,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
language,
method,
modeledMethods,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -48,6 +50,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
language,
method,
modeledMethods,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -69,6 +72,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
language,
method,
modeledMethods,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -99,6 +103,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
language,
method,
modeledMethods,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -116,6 +121,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
language,
method,
modeledMethods,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -136,6 +142,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
language,
method,
modeledMethods,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -152,6 +159,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
language,
method,
modeledMethods,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -176,6 +184,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
language,
method,
modeledMethods,
modelingStatus,
isModelingInProgress,
onChange,
});
@@ -190,6 +199,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
onChange.mock.calls[onChange.mock.calls.length - 1][1]
}
isModelingInProgress={isModelingInProgress}
modelingStatus={modelingStatus}
onChange={onChange}
/>,
);
@@ -214,6 +224,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -231,6 +242,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -245,6 +257,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -264,6 +277,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -300,6 +314,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -311,6 +326,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method={method}
modeledMethods={[modeledMethods[1]]}
isModelingInProgress={isModelingInProgress}
modelingStatus={modelingStatus}
onChange={onChange}
/>,
);
@@ -329,6 +345,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -341,6 +358,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -372,6 +390,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -405,6 +424,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -422,6 +442,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -446,6 +467,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -459,6 +481,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
onChange.mock.calls[onChange.mock.calls.length - 1][1]
}
isModelingInProgress={isModelingInProgress}
modelingStatus={modelingStatus}
onChange={onChange}
/>,
);
@@ -479,6 +502,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
onChange.mock.calls[onChange.mock.calls.length - 1][1]
}
isModelingInProgress={isModelingInProgress}
modelingStatus={modelingStatus}
onChange={onChange}
/>,
);
@@ -497,6 +521,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
onChange.mock.calls[onChange.mock.calls.length - 1][1]
}
isModelingInProgress={isModelingInProgress}
modelingStatus={modelingStatus}
onChange={onChange}
/>,
);
@@ -513,6 +538,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -528,6 +554,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
onChange.mock.calls[onChange.mock.calls.length - 1][1]
}
isModelingInProgress={isModelingInProgress}
modelingStatus={modelingStatus}
onChange={onChange}
/>,
);
@@ -561,6 +588,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -651,6 +679,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -662,6 +691,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method={method}
modeledMethods={modeledMethods.slice(0, 2)}
isModelingInProgress={isModelingInProgress}
modelingStatus={modelingStatus}
onChange={onChange}
/>,
);
@@ -675,6 +705,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -688,6 +719,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method={method}
modeledMethods={modeledMethods.slice(0, 2)}
isModelingInProgress={isModelingInProgress}
modelingStatus={modelingStatus}
onChange={onChange}
/>,
);
@@ -715,6 +747,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -729,6 +762,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -746,6 +780,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -764,6 +799,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -781,6 +817,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method={method}
modeledMethods={modeledMethods.slice(0, 1)}
isModelingInProgress={isModelingInProgress}
modelingStatus={modelingStatus}
onChange={onChange}
/>,
);
@@ -818,6 +855,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});
@@ -830,6 +868,7 @@ describe(MultipleModeledMethodsPanel.name, () => {
method,
modeledMethods,
isModelingInProgress,
modelingStatus,
onChange,
});

View File

@@ -0,0 +1,6 @@
import { styled } from "styled-components";
import { Dropdown } from "../common/Dropdown";
export const InputDropdown = styled(Dropdown)<{ $accepted: boolean }>`
font-style: ${(props) => (props.$accepted ? "normal" : "italic")};
`;

View File

@@ -237,6 +237,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
language={viewState.language}
method={method}
modeledMethod={modeledMethod}
modelingStatus={modelingStatus}
onChange={modeledMethodChangedHandlers[index]}
/>
</DataGridCell>
@@ -245,6 +246,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
language={viewState.language}
method={method}
modeledMethod={modeledMethod}
modelingStatus={modelingStatus}
onChange={modeledMethodChangedHandlers[index]}
/>
</DataGridCell>
@@ -253,6 +255,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
language={viewState.language}
method={method}
modeledMethod={modeledMethod}
modelingStatus={modelingStatus}
onChange={modeledMethodChangedHandlers[index]}
/>
</DataGridCell>
@@ -260,6 +263,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
<ModelKindDropdown
language={viewState.language}
modeledMethod={modeledMethod}
modelingStatus={modelingStatus}
onChange={modeledMethodChangedHandlers[index]}
/>
</DataGridCell>

View File

@@ -1,19 +1,22 @@
import * as React from "react";
import { ChangeEvent, useCallback, useMemo } from "react";
import { Dropdown } from "../common/Dropdown";
import {
ModeledMethod,
isModelAccepted,
modeledMethodSupportsInput,
} from "../../model-editor/modeled-method";
import { Method } from "../../model-editor/method";
import { ReadonlyDropdown } from "../common/ReadonlyDropdown";
import { QueryLanguage } from "../../common/query-language";
import { getModelsAsDataLanguage } from "../../model-editor/languages";
import { ModelingStatus } from "../../model-editor/shared/modeling-status";
import { InputDropdown } from "./InputDropdown";
type Props = {
language: QueryLanguage;
method: Method;
modeledMethod: ModeledMethod | undefined;
modelingStatus: ModelingStatus;
onChange: (modeledMethod: ModeledMethod) => void;
};
@@ -21,6 +24,7 @@ export const ModelInputDropdown = ({
language,
method,
modeledMethod,
modelingStatus,
onChange,
}: Props): JSX.Element => {
const options = useMemo(() => {
@@ -64,11 +68,14 @@ export const ModelInputDropdown = ({
return <ReadonlyDropdown value={modeledMethod.path} aria-label="Path" />;
}
const modelAccepted = isModelAccepted(modeledMethod, modelingStatus);
return (
<Dropdown
<InputDropdown
value={value}
options={options}
disabled={!enabled}
$accepted={modelAccepted}
onChange={handleChange}
aria-label="Input"
/>

View File

@@ -1,23 +1,27 @@
import * as React from "react";
import { ChangeEvent, useCallback, useEffect, useMemo } from "react";
import type {
import {
ModeledMethod,
ModeledMethodKind,
modeledMethodSupportsKind,
isModelAccepted,
} from "../../model-editor/modeled-method";
import { modeledMethodSupportsKind } from "../../model-editor/modeled-method";
import { Dropdown } from "../common/Dropdown";
import { getModelsAsDataLanguage } from "../../model-editor/languages";
import { QueryLanguage } from "../../common/query-language";
import { ModelingStatus } from "../../model-editor/shared/modeling-status";
import { InputDropdown } from "./InputDropdown";
type Props = {
language: QueryLanguage;
modeledMethod: ModeledMethod | undefined;
modelingStatus: ModelingStatus;
onChange: (modeledMethod: ModeledMethod) => void;
};
export const ModelKindDropdown = ({
language,
modeledMethod,
modelingStatus,
onChange,
}: Props) => {
const predicate = useMemo(() => {
@@ -81,11 +85,14 @@ export const ModelKindDropdown = ({
}
}, [modeledMethod, value, kinds, onChangeKind]);
const modelAccepted = isModelAccepted(modeledMethod, modelingStatus);
return (
<Dropdown
<InputDropdown
value={value}
options={options}
disabled={disabled}
$accepted={modelAccepted}
onChange={handleChange}
aria-label="Kind"
/>

View File

@@ -1,19 +1,22 @@
import * as React from "react";
import { ChangeEvent, useCallback, useMemo } from "react";
import { Dropdown } from "../common/Dropdown";
import {
ModeledMethod,
isModelAccepted,
modeledMethodSupportsOutput,
} from "../../model-editor/modeled-method";
import { Method } from "../../model-editor/method";
import { ReadonlyDropdown } from "../common/ReadonlyDropdown";
import { getModelsAsDataLanguage } from "../../model-editor/languages";
import { QueryLanguage } from "../../common/query-language";
import { ModelingStatus } from "../../model-editor/shared/modeling-status";
import { InputDropdown } from "./InputDropdown";
type Props = {
language: QueryLanguage;
method: Method;
modeledMethod: ModeledMethod | undefined;
modelingStatus: ModelingStatus;
onChange: (modeledMethod: ModeledMethod) => void;
};
@@ -21,6 +24,7 @@ export const ModelOutputDropdown = ({
language,
method,
modeledMethod,
modelingStatus,
onChange,
}: Props): JSX.Element => {
const options = useMemo(() => {
@@ -70,11 +74,14 @@ export const ModelOutputDropdown = ({
);
}
const modelAccepted = isModelAccepted(modeledMethod, modelingStatus);
return (
<Dropdown
<InputDropdown
value={value}
options={options}
disabled={!enabled}
$accepted={modelAccepted}
onChange={handleChange}
aria-label="Output"
/>

View File

@@ -1,7 +1,7 @@
import * as React from "react";
import { ChangeEvent, useCallback } from "react";
import { Dropdown } from "../common/Dropdown";
import {
isModelAccepted,
ModeledMethod,
modeledMethodSupportsProvenance,
ModeledMethodType,
@@ -13,6 +13,8 @@ import { Mutable } from "../../common/mutable";
import { ReadonlyDropdown } from "../common/ReadonlyDropdown";
import { QueryLanguage } from "../../common/query-language";
import { getModelsAsDataLanguage } from "../../model-editor/languages";
import { ModelingStatus } from "../../model-editor/shared/modeling-status";
import { InputDropdown } from "./InputDropdown";
const options: Array<{ value: ModeledMethodType; label: string }> = [
{ value: "none", label: "Unmodeled" },
@@ -26,6 +28,7 @@ type Props = {
language: QueryLanguage;
method: Method;
modeledMethod: ModeledMethod | undefined;
modelingStatus: ModelingStatus;
onChange: (modeledMethod: ModeledMethod) => void;
};
@@ -33,6 +36,7 @@ export const ModelTypeDropdown = ({
language,
method,
modeledMethod,
modelingStatus,
onChange,
}: Props): JSX.Element => {
const handleChange = useCallback(
@@ -88,10 +92,13 @@ export const ModelTypeDropdown = ({
);
}
const modelAccepted = isModelAccepted(modeledMethod, modelingStatus);
return (
<Dropdown
<InputDropdown
value={modeledMethod?.type ?? "none"}
options={options}
$accepted={modelAccepted}
onChange={handleChange}
aria-label="Model type"
/>

View File

@@ -25,6 +25,7 @@ describe(ModelKindDropdown.name, () => {
<ModelKindDropdown
language={QueryLanguage.Java}
modeledMethod={modeledMethod}
modelingStatus="unsaved"
onChange={onChange}
/>,
);
@@ -47,6 +48,7 @@ describe(ModelKindDropdown.name, () => {
<ModelKindDropdown
language={QueryLanguage.Java}
modeledMethod={modeledMethod}
modelingStatus="unsaved"
onChange={onChange}
/>,
);
@@ -63,6 +65,7 @@ describe(ModelKindDropdown.name, () => {
<ModelKindDropdown
language={QueryLanguage.Java}
modeledMethod={updatedModeledMethod}
modelingStatus="unsaved"
onChange={onChange}
/>,
);
@@ -80,6 +83,7 @@ describe(ModelKindDropdown.name, () => {
<ModelKindDropdown
language={QueryLanguage.Java}
modeledMethod={modeledMethod}
modelingStatus="unsaved"
onChange={onChange}
/>,
);
@@ -99,6 +103,7 @@ describe(ModelKindDropdown.name, () => {
<ModelKindDropdown
language={QueryLanguage.Java}
modeledMethod={modeledMethod}
modelingStatus="unsaved"
onChange={onChange}
/>,
);