@@ -2,12 +2,10 @@ import {
22 VSCodeCheckbox ,
33 VSCodeDataGridCell ,
44 VSCodeDataGridRow ,
5- VSCodeDropdown ,
65 VSCodeLink ,
7- VSCodeOption ,
86} from "@vscode/webview-ui-toolkit/react" ;
97import * as React from "react" ;
10- import { useCallback , useMemo } from "react" ;
8+ import { ChangeEvent , useCallback , useMemo } from "react" ;
119import styled from "styled-components" ;
1210import { vscode } from "../vscode-api" ;
1311
@@ -20,10 +18,7 @@ import {
2018import { KindInput } from "./KindInput" ;
2119import { extensiblePredicateDefinitions } from "../../data-extensions-editor/predicates" ;
2220import { Mode } from "../../data-extensions-editor/shared/mode" ;
23-
24- const Dropdown = styled ( VSCodeDropdown ) `
25- width: 100%;
26- ` ;
21+ import { Dropdown } from "../common/Dropdown" ;
2722
2823const ApiOrMethodCell = styled ( VSCodeDataGridCell ) `
2924 display: flex;
@@ -66,9 +61,7 @@ export const MethodRow = ({
6661 } , [ externalApiUsage . methodParameters ] ) ;
6762
6863 const handleTypeInput = useCallback (
69- ( e : InputEvent ) => {
70- const target = e . target as HTMLSelectElement ;
71-
64+ ( e : ChangeEvent < HTMLSelectElement > ) => {
7265 let newProvenance : Provenance = "manual" ;
7366 if ( modeledMethod ?. provenance === "df-generated" ) {
7467 newProvenance = "df-manual" ;
@@ -82,14 +75,14 @@ export const MethodRow = ({
8275 output : "ReturnType" ,
8376 kind : "value" ,
8477 ...modeledMethod ,
85- type : target . value as ModeledMethodType ,
78+ type : e . target . value as ModeledMethodType ,
8679 provenance : newProvenance ,
8780 } ) ;
8881 } ,
8982 [ onChange , externalApiUsage , modeledMethod , argumentsList ] ,
9083 ) ;
9184 const handleInputInput = useCallback (
92- ( e : InputEvent ) => {
85+ ( e : ChangeEvent < HTMLSelectElement > ) => {
9386 if ( ! modeledMethod ) {
9487 return ;
9588 }
@@ -104,7 +97,7 @@ export const MethodRow = ({
10497 [ onChange , externalApiUsage , modeledMethod ] ,
10598 ) ;
10699 const handleOutputInput = useCallback (
107- ( e : InputEvent ) => {
100+ ( e : ChangeEvent < HTMLSelectElement > ) => {
108101 if ( ! modeledMethod ) {
109102 return ;
110103 }
@@ -172,44 +165,56 @@ export const MethodRow = ({
172165 </ ApiOrMethodCell >
173166 < VSCodeDataGridCell gridColumn = { 2 } >
174167 < Dropdown
175- value = { showModelTypeCell && ( modeledMethod ?. type ?? "none" ) }
168+ value = { showModelTypeCell ? modeledMethod ?. type ?? "none" : undefined }
176169 disabled = { ! showModelTypeCell }
177- onInput = { handleTypeInput }
170+ onChange = { handleTypeInput }
178171 >
179- < VSCodeOption value = "none" > Unmodeled</ VSCodeOption >
180- < VSCodeOption value = "source" > Source</ VSCodeOption >
181- < VSCodeOption value = "sink" > Sink</ VSCodeOption >
182- < VSCodeOption value = "summary" > Flow summary</ VSCodeOption >
183- < VSCodeOption value = "neutral" > Neutral</ VSCodeOption >
172+ { showModelTypeCell && (
173+ < >
174+ < option value = "none" > Unmodeled</ option >
175+ < option value = "source" > Source</ option >
176+ < option value = "sink" > Sink</ option >
177+ < option value = "summary" > Flow summary</ option >
178+ < option value = "neutral" > Neutral</ option >
179+ </ >
180+ ) }
184181 </ Dropdown >
185182 </ VSCodeDataGridCell >
186183 < VSCodeDataGridCell gridColumn = { 3 } >
187184 < Dropdown
188- value = { showInputCell && modeledMethod ?. input }
185+ value = { showInputCell ? modeledMethod ?. input : undefined }
189186 disabled = { ! showInputCell }
190- onInput = { handleInputInput }
187+ onChange = { handleInputInput }
191188 >
192- < VSCodeOption value = "Argument[this]" > Argument[this]</ VSCodeOption >
193- { argumentsList . map ( ( argument , index ) => (
194- < VSCodeOption key = { argument } value = { `Argument[${ index } ]` } >
195- Argument[{ index } ]: { argument }
196- </ VSCodeOption >
197- ) ) }
189+ { showInputCell && (
190+ < >
191+ < option value = "Argument[this]" > Argument[this]</ option >
192+ { argumentsList . map ( ( argument , index ) => (
193+ < option key = { argument } value = { `Argument[${ index } ]` } >
194+ Argument[{ index } ]: { argument }
195+ </ option >
196+ ) ) }
197+ </ >
198+ ) }
198199 </ Dropdown >
199200 </ VSCodeDataGridCell >
200201 < VSCodeDataGridCell gridColumn = { 4 } >
201202 < Dropdown
202- value = { showOutputCell && modeledMethod ?. output }
203+ value = { showOutputCell ? modeledMethod ?. output : undefined }
203204 disabled = { ! showOutputCell }
204- onInput = { handleOutputInput }
205+ onChange = { handleOutputInput }
205206 >
206- < VSCodeOption value = "ReturnValue" > ReturnValue</ VSCodeOption >
207- < VSCodeOption value = "Argument[this]" > Argument[this]</ VSCodeOption >
208- { argumentsList . map ( ( argument , index ) => (
209- < VSCodeOption key = { argument } value = { `Argument[${ index } ]` } >
210- Argument[{ index } ]: { argument }
211- </ VSCodeOption >
212- ) ) }
207+ { showOutputCell && (
208+ < >
209+ < option value = "ReturnValue" > ReturnValue</ option >
210+ < option value = "Argument[this]" > Argument[this]</ option >
211+ { argumentsList . map ( ( argument , index ) => (
212+ < option key = { argument } value = { `Argument[${ index } ]` } >
213+ Argument[{ index } ]: { argument }
214+ </ option >
215+ ) ) }
216+ </ >
217+ ) }
213218 </ Dropdown >
214219 </ VSCodeDataGridCell >
215220 < VSCodeDataGridCell gridColumn = { 5 } >
0 commit comments