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,
17-
33+ setValue ,
1834 sideFormContent,
35+ requireChargingTarget = false ,
1936} : MetadataFormProps ) {
2037 const { t } = useTranslation ( ) ;
21-
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+ ] ;
2250 return (
2351 < Form >
2452 < FormGroup
@@ -36,7 +64,6 @@ export function MetadataForm({
3664 valueStateMessage = { < span > { errors . name ?. message } </ span > }
3765 required
3866 />
39-
4067 < Label for = { 'displayName' } >
4168 { t ( 'CreateProjectWorkspaceDialog.displayNameLabel' ) }
4269 </ Label >
@@ -45,8 +72,21 @@ export function MetadataForm({
4572 { ...register ( 'displayName' ) }
4673 className = { styles . input }
4774 />
48-
49- < 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 } >
5090 { t ( 'CreateProjectWorkspaceDialog.chargingTargetLabel' ) }
5191 </ Label >
5292 < Input
@@ -55,6 +95,7 @@ export function MetadataForm({
5595 className = { styles . input }
5696 />
5797 </ FormGroup >
98+
5899 { sideFormContent ? sideFormContent : null }
59100 </ Form >
60101 ) ;
0 commit comments