File tree Expand file tree Collapse file tree 4 files changed +29
-8
lines changed Expand file tree Collapse file tree 4 files changed +29
-8
lines changed Original file line number Diff line number Diff line change @@ -27,20 +27,24 @@ const {
27
27
... rest
28
28
} = Astro .props
29
29
30
- const inputRestProps = Object .fromEntries (
31
- Object .entries (rest ).filter (([key ]) => key .includes (' data' ))
32
- )
33
-
34
30
const classes = classNames ([
35
31
styles .select ,
36
32
disabled && styles .disabled ,
37
33
className
38
34
])
35
+
36
+ const inferredValue = rest .itemGroups .map (group => group .items )
37
+ .flat ()
38
+ .find (item => item .value === value )?.name
39
+
40
+ const inputRestProps = Object .fromEntries (
41
+ Object .entries (rest ).filter (([key ]) => key .includes (' data' ))
42
+ )
39
43
---
40
44
41
45
<Input
42
46
type =" text"
43
- value ={ value }
47
+ value ={ ( value && inferredValue ) ? inferredValue : value }
44
48
readonly ={ true }
45
49
disabled ={ disabled }
46
50
placeholder ={ placeholder }
Original file line number Diff line number Diff line change 16
16
17
17
import styles from ' ./select.module.scss'
18
18
19
- import type { ListEventType } from ' ../List/list'
19
+ import type { ListEventType , ListProps } from ' ../List/list'
20
20
21
21
export let name: SvelteSelectProps [' name' ] = ' '
22
22
export let value: SvelteSelectProps [' value' ] = ' '
42
42
styles .popover
43
43
])
44
44
45
+ const inferredValue = $$restProps .itemGroups
46
+ .map ((group : ListProps [' itemGroups' ][0 ]) => group .items )
47
+ .flat ()
48
+ .find ((item : ListProps [' itemGroups' ][0 ][' items' ][0 ]) => item .value === value )?.name
49
+
45
50
const inputRestProps = Object .fromEntries (
46
51
Object .entries ($$restProps ).filter (([key ]) => key .includes (' data' ))
47
52
)
110
115
111
116
<Input
112
117
type =" text"
113
- value ={value || null }
118
+ value ={( value && inferredValue ) ? inferredValue : value }
114
119
readonly ={true }
115
120
disabled ={disabled }
116
121
placeholder ={placeholder || null }
Original file line number Diff line number Diff line change @@ -30,7 +30,11 @@ const Select = ({
30
30
onChange,
31
31
...rest
32
32
} : ReactSelectProps ) => {
33
- const [ val , setValue ] = useState ( value )
33
+ const inferredValue = rest . itemGroups . map ( group => group . items )
34
+ . flat ( )
35
+ . find ( item => item . value === value ) ?. name
36
+
37
+ const [ val , setValue ] = useState ( ( value && inferredValue ) ? inferredValue : value )
34
38
35
39
const classes = classNames ( [
36
40
styles . select ,
Original file line number Diff line number Diff line change @@ -81,6 +81,14 @@ const sections = getSections({
81
81
/>
82
82
</ComponentWrapper >
83
83
84
+ <ComponentWrapper title = " With inferred value (from itemGroups)" >
85
+ <section.component
86
+ name = " with-inferred-value"
87
+ value = " new"
88
+ itemGroups = { listWithStates }
89
+ />
90
+ </ComponentWrapper >
91
+
84
92
<ComponentWrapper title = " Disabled" >
85
93
<section.component
86
94
name = " disabled"
You can’t perform that action at this time.
0 commit comments