22 VSCodeDataGridCell ,
33 VSCodeDataGridRow ,
44 VSCodeLink ,
5+ VSCodeProgressRing ,
56} from "@vscode/webview-ui-toolkit/react" ;
67import * as React from "react" ;
78import { ChangeEvent , useCallback , useMemo } from "react" ;
@@ -23,6 +24,7 @@ import {
2324 ModelingStatus ,
2425 ModelingStatusIndicator ,
2526} from "./ModelingStatusIndicator" ;
27+ import { InProgressDropdown } from "./InProgressDropdown" ;
2628
2729const ApiOrMethodCell = styled ( VSCodeDataGridCell ) `
2830 display: flex;
@@ -43,6 +45,12 @@ const ViewLink = styled(VSCodeLink)`
4345 white-space: nowrap;
4446` ;
4547
48+ const ProgressRing = styled ( VSCodeProgressRing ) `
49+ width: 16px;
50+ height: 16px;
51+ margin-left: auto;
52+ ` ;
53+
4654const modelTypeOptions : Array < { value : ModeledMethodType ; label : string } > = [
4755 { value : "none" , label : "Unmodeled" } ,
4856 { value : "source" , label : "Source" } ,
@@ -55,6 +63,7 @@ type Props = {
5563 externalApiUsage : ExternalApiUsage ;
5664 modeledMethod : ModeledMethod | undefined ;
5765 methodIsUnsaved : boolean ;
66+ modelingInProgress : boolean ;
5867 mode : Mode ;
5968 hideModeledApis : boolean ;
6069 onChange : (
@@ -216,38 +225,59 @@ function ModelableMethodRow(props: Props) {
216225 </ UsagesButton >
217226 ) }
218227 < ViewLink onClick = { jumpToUsage } > View</ ViewLink >
228+ { props . modelingInProgress && < ProgressRing /> }
219229 </ ApiOrMethodCell >
220- < VSCodeDataGridCell gridColumn = { 2 } >
221- < Dropdown
222- value = { modeledMethod ?. type ?? "none" }
223- options = { modelTypeOptions }
224- onChange = { handleTypeInput }
225- />
226- </ VSCodeDataGridCell >
227- < VSCodeDataGridCell gridColumn = { 3 } >
228- < Dropdown
229- value = { modeledMethod ?. input }
230- options = { inputOptions }
231- disabled = { ! showInputCell }
232- onChange = { handleInputInput }
233- />
234- </ VSCodeDataGridCell >
235- < VSCodeDataGridCell gridColumn = { 4 } >
236- < Dropdown
237- value = { modeledMethod ?. output }
238- options = { outputOptions }
239- disabled = { ! showOutputCell }
240- onChange = { handleOutputInput }
241- />
242- </ VSCodeDataGridCell >
243- < VSCodeDataGridCell gridColumn = { 5 } >
244- < KindInput
245- kinds = { predicate ?. supportedKinds || [ ] }
246- value = { modeledMethod ?. kind }
247- disabled = { ! showKindCell }
248- onChange = { handleKindChange }
249- />
250- </ VSCodeDataGridCell >
230+ { props . modelingInProgress && (
231+ < >
232+ < VSCodeDataGridCell gridColumn = { 2 } >
233+ < InProgressDropdown />
234+ </ VSCodeDataGridCell >
235+ < VSCodeDataGridCell gridColumn = { 3 } >
236+ < InProgressDropdown />
237+ </ VSCodeDataGridCell >
238+ < VSCodeDataGridCell gridColumn = { 4 } >
239+ < InProgressDropdown />
240+ </ VSCodeDataGridCell >
241+ < VSCodeDataGridCell gridColumn = { 5 } >
242+ < InProgressDropdown />
243+ </ VSCodeDataGridCell >
244+ </ >
245+ ) }
246+ { ! props . modelingInProgress && (
247+ < >
248+ < VSCodeDataGridCell gridColumn = { 2 } >
249+ < Dropdown
250+ value = { modeledMethod ?. type ?? "none" }
251+ options = { modelTypeOptions }
252+ onChange = { handleTypeInput }
253+ />
254+ </ VSCodeDataGridCell >
255+ < VSCodeDataGridCell gridColumn = { 3 } >
256+ < Dropdown
257+ value = { modeledMethod ?. input }
258+ options = { inputOptions }
259+ disabled = { ! showInputCell }
260+ onChange = { handleInputInput }
261+ />
262+ </ VSCodeDataGridCell >
263+ < VSCodeDataGridCell gridColumn = { 4 } >
264+ < Dropdown
265+ value = { modeledMethod ?. output }
266+ options = { outputOptions }
267+ disabled = { ! showOutputCell }
268+ onChange = { handleOutputInput }
269+ />
270+ </ VSCodeDataGridCell >
271+ < VSCodeDataGridCell gridColumn = { 5 } >
272+ < KindInput
273+ kinds = { predicate ?. supportedKinds || [ ] }
274+ value = { modeledMethod ?. kind }
275+ disabled = { ! showKindCell }
276+ onChange = { handleKindChange }
277+ />
278+ </ VSCodeDataGridCell >
279+ </ >
280+ ) }
251281 </ VSCodeDataGridRow >
252282 ) ;
253283}
0 commit comments