11import "react" ;
22import { DropdownModel , PropertyChangeHandler } from "../model/component" ;
3- import { ChangeEvent } from "react" ;
3+ import React from "react" ;
4+ import {
5+ // Box,
6+ FormControl ,
7+ InputLabel ,
8+ MenuItem ,
9+ Select ,
10+ SelectChangeEvent ,
11+ } from "@mui/material" ;
412
513export interface DashiDropdownProps extends Omit < DropdownModel , "type" > {
614 onPropertyChange : PropertyChangeHandler ;
@@ -10,19 +18,23 @@ function DashiDropdown({
1018 id,
1119 name,
1220 value,
13- style,
1421 options,
1522 disabled,
23+ style,
24+ label,
1625 onPropertyChange,
1726} : DashiDropdownProps ) {
18- const handleChange = ( event : ChangeEvent < HTMLSelectElement > ) => {
27+ const [ dropdownValue , setDropdownValue ] = React . useState ( value ) ;
28+ const handleChange = ( event : SelectChangeEvent ) => {
1929 if ( ! id ) {
2030 return ;
2131 }
22- let newValue : string | number = event . currentTarget . value ;
23- if ( typeof value === "number" ) {
32+ let newValue : string | number = event . target . value ;
33+ if ( typeof value == "number" ) {
2434 newValue = Number . parseInt ( newValue ) ;
2535 }
36+
37+ setDropdownValue ( newValue ) ;
2638 return onPropertyChange ( {
2739 componentType : "Dropdown" ,
2840 componentId : id ,
@@ -31,20 +43,24 @@ function DashiDropdown({
3143 } ) ;
3244 } ;
3345 return (
34- < select
35- id = { id }
36- name = { name }
37- value = { value }
38- style = { style }
39- disabled = { disabled }
40- onChange = { handleChange }
41- >
42- { options . map ( ( [ text , value ] , index ) => (
43- < option key = { index } value = { value } >
44- { text }
45- </ option >
46- ) ) }
47- </ select >
46+ < FormControl >
47+ { label && < InputLabel > { label } </ InputLabel > }
48+ < Select
49+ id = { id }
50+ name = { name }
51+ style = { style }
52+ value = { `${ dropdownValue } ` }
53+ disabled = { disabled }
54+ onChange = { handleChange }
55+ variant = { "filled" }
56+ >
57+ { options . map ( ( [ text , value ] , index ) => (
58+ < MenuItem key = { index } value = { value } >
59+ { text }
60+ </ MenuItem >
61+ ) ) }
62+ </ Select >
63+ </ FormControl >
4864 ) ;
4965}
5066
0 commit comments