1- import { FieldErrors , UseFormRegister } from 'react-hook-form' ;
1+ import { FieldErrors , UseFormRegister , UseFormSetValue } from 'react-hook-form' ;
22import { CreateDialogProps } from './CreateWorkspaceDialogContainer.tsx' ;
33import { useTranslation } from 'react-i18next' ;
4- import { Form , FormGroup , Input , Label } from '@ui5/webcomponents-react' ;
4+ import {
5+ Form ,
6+ FormGroup ,
7+ Input ,
8+ Label ,
9+ Option ,
10+ Select ,
11+ SelectDomRef ,
12+ Ui5CustomEvent ,
13+ } from '@ui5/webcomponents-react' ;
514import styles from './CreateProjectWorkspaceDialog.module.css' ;
15+ import React from 'react' ;
616
717export interface MetadataFormProps {
818 register : UseFormRegister < CreateDialogProps > ;
919 errors : FieldErrors < CreateDialogProps > ;
10-
20+ setValue : UseFormSetValue < CreateDialogProps > ;
1121 sideFormContent ?: React . ReactNode ;
22+ requireChargingTarget ?: boolean ;
23+ }
24+
25+ interface SelectOption {
26+ label : string ;
27+ value : string ;
1228}
1329
1430export function MetadataForm ( {
1531 register,
1632 errors,
33+ setValue,
1734 sideFormContent,
35+ requireChargingTarget = false ,
1836} : MetadataFormProps ) {
1937 const { t } = useTranslation ( ) ;
20-
38+ const handleChargingTargetTypeChange = (
39+ event : Ui5CustomEvent < SelectDomRef , { selectedOption : HTMLElement } > ,
40+ ) => {
41+ const selectedOption = event . detail . selectedOption as HTMLElement ;
42+ setValue ( 'chargingTargetType' , selectedOption . dataset . value ) ;
43+ } ;
44+ const chargingTypes : SelectOption [ ] = [
45+ ...( ! requireChargingTarget
46+ ? [ { label : t ( 'common.notSelected' ) , value : '' } ]
47+ : [ ] ) ,
48+ { label : t ( 'common.btp' ) , value : 'btp' } ,
49+ ] ;
2150 return (
2251 < Form >
2352 < FormGroup
@@ -35,7 +64,6 @@ export function MetadataForm({
3564 valueStateMessage = { < span > { errors . name ?. message } </ span > }
3665 required
3766 />
38-
3967 < Label for = { 'displayName' } >
4068 { t ( 'CreateProjectWorkspaceDialog.displayNameLabel' ) }
4169 </ Label >
@@ -44,8 +72,21 @@ export function MetadataForm({
4472 { ...register ( 'displayName' ) }
4573 className = { styles . input }
4674 />
47-
48- < Label for = { 'chargingTarget' } >
75+ < Label for = { 'chargingTargetType' } required = { requireChargingTarget } >
76+ { t ( 'CreateProjectWorkspaceDialog.chargingTargetTypeLabel' ) }
77+ </ Label >
78+ < Select
79+ id = { 'chargingTargetType' }
80+ className = { styles . input }
81+ onChange = { handleChargingTargetTypeChange }
82+ >
83+ { chargingTypes . map ( ( option ) => (
84+ < Option key = { option . value } data-value = { option . value } >
85+ { option . label }
86+ </ Option >
87+ ) ) }
88+ </ Select >
89+ < Label for = { 'chargingTarget' } required = { requireChargingTarget } >
4990 { t ( 'CreateProjectWorkspaceDialog.chargingTargetLabel' ) }
5091 </ Label >
5192 < Input
@@ -54,6 +95,7 @@ export function MetadataForm({
5495 className = { styles . input }
5596 />
5697 </ FormGroup >
98+
5799 { sideFormContent ? sideFormContent : null }
58100 </ Form >
59101 ) ;
0 commit comments