Skip to content

Commit 677c742

Browse files
authored
Merge pull request #19 from axewilledge/main
Add new UX for creating http responses and few bug fixes
2 parents 71f68a0 + f76731a commit 677c742

File tree

25 files changed

+593
-248
lines changed

25 files changed

+593
-248
lines changed

workspaces/ballerina/ballerina-core/src/interfaces/extended-lang-client.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1380,6 +1380,24 @@ export interface ResourceSourceCodeResponse {
13801380
[key: string]: TextEdit[];
13811381
};
13821382
}
1383+
1384+
export interface ResourceReturnTypesRequest {
1385+
filePath?: string;
1386+
context?: string;
1387+
}
1388+
1389+
export interface ResponseCode {
1390+
category: string;
1391+
label: string;
1392+
type: string;
1393+
statusCode: string;
1394+
hasBody?: boolean;
1395+
}
1396+
export interface ResourceReturnTypesResponse {
1397+
completions: ResponseCode[];
1398+
}
1399+
1400+
13831401
// <-------- Service Designer Related ------->
13841402

13851403

@@ -1594,6 +1612,7 @@ export interface BIInterface extends BaseLangClientInterface {
15941612
getHttpResourceModel: (params: HttpResourceModelRequest) => Promise<HttpResourceModelResponse>;
15951613
addResourceSourceCode: (params: FunctionSourceCodeRequest) => Promise<ResourceSourceCodeResponse>;
15961614
addFunctionSourceCode: (params: FunctionSourceCodeRequest) => Promise<ResourceSourceCodeResponse>;
1615+
getResourceReturnTypes: (params: ResourceReturnTypesRequest) => Promise<ResourceReturnTypesResponse>;
15971616

15981617
// Function APIs
15991618
getFunctionNode: (params: FunctionNodeRequest) => Promise<FunctionNodeResponse>;

workspaces/ballerina/ballerina-core/src/rpc-types/service-designer/index.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*/
1818

1919
import { UpdatedArtifactsResponse } from "../../interfaces/bi";
20-
import { ListenerModelRequest, ListenerModelResponse, ServiceModelRequest, ServiceModelResponse, ServiceModelFromCodeRequest, ServiceModelFromCodeResponse, HttpResourceModelRequest, HttpResourceModelResponse, FunctionSourceCodeRequest, ListenerSourceCodeRequest, ListenersRequest, ListenersResponse, ServiceSourceCodeRequest, ListenerModelFromCodeRequest, ListenerModelFromCodeResponse, TriggerModelsRequest, TriggerModelsResponse, FunctionModelRequest, FunctionModelResponse } from "../../interfaces/extended-lang-client";
20+
import { ListenerModelRequest, ListenerModelResponse, ServiceModelRequest, ServiceModelResponse, ServiceModelFromCodeRequest, ServiceModelFromCodeResponse, HttpResourceModelRequest, HttpResourceModelResponse, FunctionSourceCodeRequest, ListenerSourceCodeRequest, ListenersRequest, ListenersResponse, ServiceSourceCodeRequest, ListenerModelFromCodeRequest, ListenerModelFromCodeResponse, TriggerModelsRequest, TriggerModelsResponse, FunctionModelRequest, FunctionModelResponse, ResourceReturnTypesRequest, ResourceReturnTypesResponse } from "../../interfaces/extended-lang-client";
2121
import {
2222
ExportOASRequest,
2323
ExportOASResponse,
@@ -37,6 +37,7 @@ export interface ServiceDesignerAPI {
3737
updateServiceSourceCode: (params: ServiceSourceCodeRequest) => Promise<UpdatedArtifactsResponse>;
3838
getServiceModelFromCode: (params: ServiceModelFromCodeRequest) => Promise<ServiceModelFromCodeResponse>;
3939
getHttpResourceModel: (params: HttpResourceModelRequest) => Promise<HttpResourceModelResponse>;
40+
getResourceReturnTypes: (params: ResourceReturnTypesRequest) => Promise<ResourceReturnTypesResponse>;
4041
addResourceSourceCode: (params: FunctionSourceCodeRequest) => Promise<UpdatedArtifactsResponse>;
4142
addFunctionSourceCode: (params: FunctionSourceCodeRequest) => Promise<UpdatedArtifactsResponse>;
4243
updateResourceSourceCode: (params: FunctionSourceCodeRequest) => Promise<UpdatedArtifactsResponse>;

workspaces/ballerina/ballerina-core/src/rpc-types/service-designer/interfaces.ts

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -24,73 +24,6 @@ export interface ExportOASRequest {
2424
export interface ExportOASResponse {
2525
openSpecFile: string;
2626
}
27-
export interface ResponseCode {
28-
code: number;
29-
title: string;
30-
source: string;
31-
}
32-
33-
export const responseCodes: ResponseCode[] = [
34-
{ code: 200, title: "200 - OK", source: "http:Ok" },
35-
{ code: 100, title: "100 - Continue", source: "http:Continue" },
36-
{ code: 101, title: "101 - Switching Protocols", source: "http:SwitchingProtocols" },
37-
{ code: 201, title: "201 - Created", source: "http:Created" },
38-
{ code: 202, title: "202 - Accepted", source: "http:Accepted" },
39-
{ code: 203, title: "203 - Non-Authoritative Information", source: "http:NonAuthoritativeInformation" },
40-
{ code: 204, title: "204 - No Content", source: "http:NoContent" },
41-
{ code: 205, title: "205 - Reset Content", source: "http:ResetContent" },
42-
{ code: 206, title: "206 - Partial Content", source: "http:PartialContent" },
43-
{ code: 207, title: "207 - Multi-Status", source: "http:MultiStatus" },
44-
{ code: 208, title: "208 - Already Reported", source: "http:AlreadyReported" },
45-
{ code: 226, title: "226 - IM Used", source: "http:IMUsed" },
46-
{ code: 300, title: "300 - Multiple Choices", source: "http:MultipleChoices" },
47-
{ code: 301, title: "301 - Moved Permanently", source: "http:MovedPermanently" },
48-
{ code: 302, title: "302 - Found", source: "http:Found" },
49-
{ code: 303, title: "303 - See Other", source: "http:SeeOther" },
50-
{ code: 304, title: "304 - Not Modified", source: "http:NotModified" },
51-
{ code: 305, title: "305 - Use Proxy", source: "http:UseProxy" },
52-
{ code: 307, title: "307 - Temporary Redirect", source: "http:TemporaryRedirect" },
53-
{ code: 308, title: "308 - Permanent Redirect", source: "http:PermanentRedirect" },
54-
{ code: 400, title: "400 - Bad Request", source: "http:BadRequest" },
55-
{ code: 401, title: "401 - Unauthorized", source: "http:Unauthorized" },
56-
{ code: 402, title: "402 - Payment Required", source: "http:PaymentRequired" },
57-
{ code: 403, title: "403 - Forbidden", source: "http:Forbidden" },
58-
{ code: 404, title: "404 - Not Found", source: "http:NotFound" },
59-
{ code: 405, title: "405 - Method Not Allowed", source: "http:MethodNotAllowed" },
60-
{ code: 406, title: "406 - Not Acceptable", source: "http:NotAcceptable" },
61-
{ code: 407, title: "407 - Proxy Authentication Required", source: "http:ProxyAuthenticationRequired" },
62-
{ code: 408, title: "408 - Request Timeout", source: "http:RequestTimeout" },
63-
{ code: 409, title: "409 - Conflict", source: "http:Conflict" },
64-
{ code: 410, title: "410 - Gone", source: "http:Gone" },
65-
{ code: 411, title: "411 - Length Required", source: "http:LengthRequired" },
66-
{ code: 412, title: "412 - Precondition Failed", source: "http:PreconditionFailed" },
67-
{ code: 413, title: "413 - Payload Too Large", source: "http:PayloadTooLarge" },
68-
{ code: 414, title: "414 - URI Too Long", source: "http:UriTooLong" },
69-
{ code: 415, title: "415 - Unsupported Media Type", source: "http:UnsupportedMediaType" },
70-
{ code: 416, title: "416 - Range Not Satisfiable", source: "http:RangeNotSatisfiable" },
71-
{ code: 417, title: "417 - Expectation Failed", source: "http:ExpectationFailed" },
72-
{ code: 422, title: "422 - Unprocessable Entity", source: "http:UnprocessableEntity" },
73-
{ code: 423, title: "423 - Locked", source: "http:Locked" },
74-
{ code: 424, title: "424 - Failed Dependency", source: "http:FailedDependency" },
75-
{ code: 425, title: "425 - Too Early", source: "http:TooEarly" },
76-
{ code: 426, title: "426 - Upgrade Required", source: "http:UpgradeRequired" },
77-
{ code: 428, title: "428 - Precondition Required", source: "http:PreconditionRequired" },
78-
{ code: 429, title: "429 - Too Many Requests", source: "http:TooManyRequests" },
79-
{ code: 431, title: "431 - Request Header Fields Too Large", source: "http:RequestHeaderFieldsTooLarge" },
80-
{ code: 451, title: "451 - Unavailable Due To Legal Reasons", source: "http:UnavailableDueToLegalReasons" },
81-
{ code: 500, title: "500 - Internal Server Error", source: "http:InternalServerError" },
82-
{ code: 501, title: "501 - Not Implemented", source: "http:NotImplemented" },
83-
{ code: 502, title: "502 - Bad Gateway", source: "http:BadGateway" },
84-
{ code: 503, title: "503 - Service Unavailable", source: "http:ServiceUnavailable" },
85-
{ code: 504, title: "504 - Gateway Timeout", source: "http:GatewayTimeout" },
86-
{ code: 505, title: "505 - HTTP Version Not Supported", source: "http:HttpVersionNotSupported" },
87-
{ code: 506, title: "506 - Variant Also Negotiates", source: "http:VariantAlsoNegotiates" },
88-
{ code: 507, title: "507 - Insufficient Storage", source: "http:InsufficientStorage" },
89-
{ code: 508, title: "508 - Loop Detected", source: "http:LoopDetected" },
90-
{ code: 510, title: "510 - Not Extended", source: "http:NotExtended" },
91-
{ code: 511, title: "511 - Network Authentication Required", source: "http:NetworkAuthorizationRequired" }
92-
]
93-
9427
export interface SourceUpdateResponse {
9528
artifacts: ProjectStructureArtifactResponse[]
9629
}

workspaces/ballerina/ballerina-core/src/rpc-types/service-designer/rpc-type.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* THIS FILE INCLUDES AUTO GENERATED CODE
1919
*/
2020
import { UpdatedArtifactsResponse } from "../../interfaces/bi";
21-
import { ListenerModelRequest, ListenerModelResponse, ServiceModelRequest, ServiceModelResponse, ServiceModelFromCodeRequest, ServiceModelFromCodeResponse, HttpResourceModelRequest, HttpResourceModelResponse, FunctionSourceCodeRequest, ListenerSourceCodeRequest, ListenersRequest, ListenersResponse, ServiceSourceCodeRequest, ListenerModelFromCodeRequest, ListenerModelFromCodeResponse, TriggerModelsRequest, TriggerModelsResponse, FunctionModelRequest, FunctionModelResponse } from "../../interfaces/extended-lang-client";
21+
import { ListenerModelRequest, ListenerModelResponse, ServiceModelRequest, ServiceModelResponse, ServiceModelFromCodeRequest, ServiceModelFromCodeResponse, HttpResourceModelRequest, HttpResourceModelResponse, FunctionSourceCodeRequest, ListenerSourceCodeRequest, ListenersRequest, ListenersResponse, ServiceSourceCodeRequest, ListenerModelFromCodeRequest, ListenerModelFromCodeResponse, TriggerModelsRequest, TriggerModelsResponse, FunctionModelRequest, FunctionModelResponse, ResourceReturnTypesRequest, ResourceReturnTypesResponse } from "../../interfaces/extended-lang-client";
2222
import {
2323
ExportOASRequest,
2424
ExportOASResponse,
@@ -39,6 +39,7 @@ export const addServiceSourceCode: RequestType<ServiceSourceCodeRequest, Updated
3939
export const updateServiceSourceCode: RequestType<ServiceSourceCodeRequest, UpdatedArtifactsResponse> = { method: `${_preFix}/updateServiceSourceCode` };
4040
export const getServiceModelFromCode: RequestType<ServiceModelFromCodeRequest, ServiceModelFromCodeResponse> = { method: `${_preFix}/getServiceModelFromCode` };
4141
export const getHttpResourceModel: RequestType<HttpResourceModelRequest, HttpResourceModelResponse> = { method: `${_preFix}/getHttpResourceModel` };
42+
export const getResourceReturnTypes: RequestType<ResourceReturnTypesRequest, ResourceReturnTypesResponse> = { method: `${_preFix}/getResourceReturnTypes` };
4243
export const addResourceSourceCode: RequestType<FunctionSourceCodeRequest, UpdatedArtifactsResponse> = { method: `${_preFix}/addResourceSourceCode` };
4344
export const addFunctionSourceCode: RequestType<FunctionSourceCodeRequest, UpdatedArtifactsResponse> = { method: `${_preFix}/addFunctionSourceCode` };
4445
export const updateResourceSourceCode: RequestType<FunctionSourceCodeRequest, UpdatedArtifactsResponse> = { method: `${_preFix}/updateResourceSourceCode` };

workspaces/ballerina/ballerina-extension/src/core/extended-language-client.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ import {
223223
UpdateConfigVariableResponseV2,
224224
DeleteConfigVariableRequestV2,
225225
DeleteConfigVariableResponseV2,
226+
ResourceReturnTypesRequest,
227+
ResourceReturnTypesResponse,
226228
JsonToTypeRequest,
227229
JsonToTypeResponse
228230
} from "@wso2/ballerina-core";
@@ -344,6 +346,7 @@ enum EXTENDED_APIS {
344346
BI_SERVICE_GET_SERVICE_SOURCE = 'serviceDesign/getServiceFromSource',
345347
BI_SERVICE_UPDATE_SERVICE_CLASS = 'serviceDesign/updateServiceClass',
346348
BI_SERVICE_GET_RESOURCE = 'serviceDesign/getFunctionModel',
349+
BI_SERVICE_GET_RESOURCE_RETURN_TYPES = 'serviceDesign/types',
347350
BI_SERVICE_ADD_RESOURCE = 'serviceDesign/addResource',
348351
BI_SERVICE_ADD_FUNCTION = 'serviceDesign/addFunction',
349352
BI_SERVICE_UPDATE_RESOURCE = 'serviceDesign/updateFunction',
@@ -1024,6 +1027,10 @@ export class ExtendedLangClient extends LanguageClient implements ExtendedLangCl
10241027
return this.sendRequest<HttpResourceModelResponse>(EXTENDED_APIS.BI_SERVICE_GET_RESOURCE, params);
10251028
}
10261029

1030+
async getResourceReturnTypes(params: ResourceReturnTypesRequest): Promise<ResourceReturnTypesResponse> {
1031+
return this.sendRequest<ResourceReturnTypesResponse>(EXTENDED_APIS.BI_SERVICE_GET_RESOURCE_RETURN_TYPES, params);
1032+
}
1033+
10271034
async addResourceSourceCode(params: FunctionSourceCodeRequest): Promise<ResourceSourceCodeResponse> {
10281035
return this.sendRequest<ResourceSourceCodeResponse>(EXTENDED_APIS.BI_SERVICE_ADD_RESOURCE, params);
10291036
}

workspaces/ballerina/ballerina-extension/src/rpc-managers/service-designer/rpc-handler.ts

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,33 @@
1818
* THIS FILE INCLUDES AUTO GENERATED CODE
1919
*/
2020
import {
21-
ExportOASRequest,
22-
FunctionModelRequest,
23-
FunctionSourceCodeRequest,
24-
HttpResourceModelRequest,
25-
ListenerModelFromCodeRequest,
26-
ListenerModelRequest,
27-
ListenerSourceCodeRequest,
28-
ListenersRequest,
29-
ServiceModelFromCodeRequest,
30-
ServiceModelRequest,
31-
ServiceSourceCodeRequest,
32-
TriggerModelsRequest,
3321
addFunctionSourceCode,
3422
addListenerSourceCode,
3523
addResourceSourceCode,
3624
addServiceSourceCode,
3725
exportOASFile,
26+
ExportOASRequest,
27+
FunctionModelRequest,
28+
FunctionSourceCodeRequest,
3829
getFunctionModel,
3930
getHttpResourceModel,
4031
getListenerModel,
4132
getListenerModelFromCode,
4233
getListeners,
34+
getResourceReturnTypes,
4335
getServiceModel,
4436
getServiceModelFromCode,
4537
getTriggerModels,
38+
HttpResourceModelRequest,
39+
ListenerModelFromCodeRequest,
40+
ListenerModelRequest,
41+
ListenerSourceCodeRequest,
42+
ListenersRequest,
43+
ResourceReturnTypesRequest,
44+
ServiceModelFromCodeRequest,
45+
ServiceModelRequest,
46+
ServiceSourceCodeRequest,
47+
TriggerModelsRequest,
4648
updateListenerSourceCode,
4749
updateResourceSourceCode,
4850
updateServiceSourceCode
@@ -65,6 +67,7 @@ export function registerServiceDesignerRpcHandlers(messenger: Messenger) {
6567
messenger.onRequest(updateServiceSourceCode, (args: ServiceSourceCodeRequest) => rpcManger.updateServiceSourceCode(args));
6668
messenger.onRequest(getServiceModelFromCode, (args: ServiceModelFromCodeRequest) => rpcManger.getServiceModelFromCode(args));
6769
messenger.onRequest(getHttpResourceModel, (args: HttpResourceModelRequest) => rpcManger.getHttpResourceModel(args));
70+
messenger.onRequest(getResourceReturnTypes, (args: ResourceReturnTypesRequest) => rpcManger.getResourceReturnTypes(args));
6871
messenger.onRequest(addResourceSourceCode, (args: FunctionSourceCodeRequest) => rpcManger.addResourceSourceCode(args));
6972
messenger.onRequest(addFunctionSourceCode, (args: FunctionSourceCodeRequest) => rpcManger.addFunctionSourceCode(args));
7073
messenger.onRequest(updateResourceSourceCode, (args: FunctionSourceCodeRequest) => rpcManger.updateResourceSourceCode(args));

workspaces/ballerina/ballerina-extension/src/rpc-managers/service-designer/rpc-manager.ts

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
* THIS FILE INCLUDES AUTO GENERATED CODE
1919
*/
2020
import {
21+
DIRECTORY_MAP,
2122
ExportOASRequest,
2223
ExportOASResponse,
2324
FunctionModelRequest,
@@ -34,29 +35,26 @@ import {
3435
ListenersRequest,
3536
ListenersResponse,
3637
OpenAPISpec,
38+
ResourceReturnTypesRequest,
39+
ResourceReturnTypesResponse,
3740
ResourceSourceCodeResponse,
38-
STModification,
3941
ServiceDesignerAPI,
4042
ServiceModelFromCodeRequest,
4143
ServiceModelFromCodeResponse,
4244
ServiceModelRequest,
4345
ServiceModelResponse,
4446
ServiceSourceCodeRequest,
45-
UpdatedArtifactsResponse,
46-
SyntaxTree,
4747
TriggerModelsRequest,
4848
TriggerModelsResponse,
49-
DIRECTORY_MAP
49+
UpdatedArtifactsResponse
5050
} from "@wso2/ballerina-core";
5151
import { NodePosition } from "@wso2/syntax-tree";
5252
import * as fs from 'fs';
53-
import { existsSync, writeFileSync } from "fs";
5453
import * as yaml from 'js-yaml';
5554
import * as path from 'path';
56-
import * as vscode from "vscode";
57-
import { Uri, window, workspace } from "vscode";
58-
import { StateMachine } from "../../stateMachine";
55+
import { window, workspace } from "vscode";
5956
import { extension } from "../../BalExtensionContext";
57+
import { StateMachine } from "../../stateMachine";
6058
import { updateSourceCode } from "../../utils/source-utils";
6159

6260
export class ServiceDesignerRpcManager implements ServiceDesignerAPI {
@@ -388,4 +386,18 @@ export class ServiceDesignerRpcManager implements ServiceDesignerAPI {
388386
console.log(`>>> Created file at ${targetFile}`);
389387
}
390388
}
389+
390+
async getResourceReturnTypes(params: ResourceReturnTypesRequest): Promise<ResourceReturnTypesResponse> {
391+
return new Promise(async (resolve) => {
392+
const context = StateMachine.context();
393+
params.filePath = StateMachine.context().projectUri;
394+
params.context = "HTTP_STATUS_CODE";
395+
try {
396+
const res: ResourceReturnTypesResponse = await context.langClient.getResourceReturnTypes(params);
397+
resolve(res);
398+
} catch (error) {
399+
console.log(">>> error fetching resource return types", error);
400+
}
401+
});
402+
}
391403
}

workspaces/ballerina/ballerina-rpc-client/src/rpc-clients/service-designer/rpc-client.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ import {
3232
ListenerSourceCodeRequest,
3333
ListenersRequest,
3434
ListenersResponse,
35+
ResourceReturnTypesRequest,
36+
ResourceReturnTypesResponse,
3537
ServiceDesignerAPI,
3638
ServiceModelFromCodeRequest,
3739
ServiceModelFromCodeResponse,
@@ -51,6 +53,7 @@ import {
5153
getListenerModel,
5254
getListenerModelFromCode,
5355
getListeners,
56+
getResourceReturnTypes,
5457
getServiceModel,
5558
getServiceModelFromCode,
5659
getTriggerModels,
@@ -120,6 +123,10 @@ export class ServiceDesignerRpcClient implements ServiceDesignerAPI {
120123
return this._messenger.sendRequest(getHttpResourceModel, HOST_EXTENSION, params);
121124
}
122125

126+
getResourceReturnTypes(params: ResourceReturnTypesRequest): Promise<ResourceReturnTypesResponse> {
127+
return this._messenger.sendRequest(getResourceReturnTypes, HOST_EXTENSION, params);
128+
}
129+
123130
addResourceSourceCode(params: FunctionSourceCodeRequest): Promise<UpdatedArtifactsResponse> {
124131
return this._messenger.sendRequest(addResourceSourceCode, HOST_EXTENSION, params);
125132
}

workspaces/ballerina/ballerina-side-panel/src/components/Form/types.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*/
1818

1919
import { RefObject } from "react";
20-
import { DiagnosticMessage, FormDiagnostics, TextEdit, PropertyModel, LinePosition, LineRange, ExpressionProperty, Metadata, RecordTypeField, Imports } from "@wso2/ballerina-core";
20+
import { DiagnosticMessage, FormDiagnostics, TextEdit, PropertyModel, LinePosition, LineRange, ExpressionProperty, Metadata, RecordTypeField, Imports } from "@wso2/ballerina-core";
2121
import { ParamConfig } from "../ParamManager/ParamManager";
2222
import { CompletionItem, FormExpressionEditorRef, HelperPaneHeight, HelperPaneOrigin, OptionProps } from "@wso2/ui-toolkit";
2323

@@ -53,8 +53,9 @@ export type FormField = {
5353
enabled: boolean;
5454
lineRange?: LineRange;
5555
metadata?: Metadata;
56-
codedata?: {[key: string]: any};
57-
imports?: {[key: string]: string};
56+
codedata?: { [key: string]: any };
57+
imports?: { [key: string]: string };
58+
onValueChange?: (value: string) => void;
5859
};
5960

6061
export type ParameterValue = {

workspaces/ballerina/ballerina-side-panel/src/components/editors/DropdownEditor.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,16 @@ export function DropdownEditor(props: DropdownEditorProps) {
4343
return (
4444
<Dropdown
4545
id={field.key}
46+
description={field.documentation}
4647
{...register(field.key, { required: !field.optional, value: getValueForDropdown(field) })}
4748
label={capitalize(field.label)}
4849
items={field.itemOptions ? field.itemOptions : field.items?.map((item) => ({ id: item, content: item, value: item }))}
4950
required={!field.optional}
5051
disabled={!field.editable}
51-
onChange={(e) => setValue(field.key, e.target.value)}
52+
onChange={(e) => {
53+
setValue(field.key, e.target.value);
54+
field.onValueChange?.(e.target.value);
55+
}}
5256
sx={{ width: "100%" }}
5357
containerSx={{ width: "100%" }}
5458
addNewBtnClick={field.addNewButton ? () => openSubPanel({ view: SubPanelView.ADD_NEW_FORM }) : undefined}

0 commit comments

Comments
 (0)