File tree 4 files changed +35
-17
lines changed 4 files changed +35
-17
lines changed Original file line number Diff line number Diff line change @@ -21,8 +21,9 @@ const {
21
21
label,
22
22
subText,
23
23
disabled,
24
- className,
25
24
position,
25
+ updateValue = true ,
26
+ className,
26
27
... rest
27
28
} = Astro .props
28
29
@@ -42,6 +43,7 @@ const classes = classNames([
42
43
label ={ label }
43
44
subText ={ subText }
44
45
data-id ={ ` w-select-${name } ` }
46
+ data-no-update ={ ! updateValue ? ' true' : undefined }
45
47
data-position ={ position }
46
48
labelClassName ={ classes }
47
49
>
@@ -125,12 +127,13 @@ const classes = classNames([
125
127
126
128
closePopover(`[data-id="${popoverId}"]`)
127
129
128
- selectElement.value = name
130
+ if (!selectElement.dataset.noUpdate) {
131
+ selectElement.value = name
132
+ }
129
133
130
134
dispatch('selectOnChange', {
131
- select: selectName,
132
- selectElement,
133
- ...payload
135
+ ...payload,
136
+ select: selectName
134
137
})
135
138
})
136
139
</script >
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'
20
+
19
21
export let name: SvelteSelectProps [' name' ] = ' '
20
22
export let value: SvelteSelectProps [' value' ] = ' '
21
23
export let placeholder: SvelteSelectProps [' placeholder' ] = ' '
22
24
export let label: SvelteSelectProps [' label' ] = ' '
23
25
export let subText: SvelteSelectProps [' subText' ] = ' '
24
26
export let disabled: SvelteSelectProps [' disabled' ] = false
25
- export let className : SvelteSelectProps [' className ' ] = ' '
27
+ export let updateValue : SvelteSelectProps [' updateValue ' ] = true
26
28
export let position: SvelteSelectProps [' position' ] = ' bottom'
29
+ export let className: SvelteSelectProps [' className' ] = ' '
27
30
export let onChange: SvelteSelectProps [' onChange' ] = () => {}
28
31
29
32
let popoverInstance: any
39
42
styles .popover
40
43
])
41
44
42
- const select = (payload : any ) => {
45
+ const select = (event : ListEventType ) => {
43
46
closePopover (` .w-options-${name } ` )
44
47
45
- value = payload .name
48
+ if (updateValue ) {
49
+ value = event .name
50
+ }
46
51
47
52
onChange ?.({
48
- select: name ,
49
- ... payload
53
+ ... event ,
54
+ select: name
50
55
})
51
56
}
52
57
Original file line number Diff line number Diff line change @@ -15,15 +15,18 @@ import ArrowDown from '../../icons/arrow-down.svg?raw'
15
15
16
16
import styles from './select.module.scss'
17
17
18
+ import type { ListEventType } from '../List/list'
19
+
18
20
const Select = ( {
19
21
name,
20
22
value,
21
23
placeholder,
22
24
label,
23
25
subText,
24
26
disabled,
25
- className ,
27
+ updateValue = true ,
26
28
position = 'bottom' ,
29
+ className,
27
30
onChange,
28
31
...rest
29
32
} : ReactSelectProps ) => {
@@ -41,14 +44,16 @@ const Select = ({
41
44
42
45
let popoverInstance : any
43
46
44
- const select = ( payload : any ) => {
47
+ const select = ( event : ListEventType ) => {
45
48
closePopover ( `.w-options-${ name } ` )
46
49
47
- setValue ( payload . name )
50
+ if ( updateValue ) {
51
+ setValue ( event . name )
52
+ }
48
53
49
54
onChange ?.( {
50
- select : name ,
51
- ... payload
55
+ ... event ,
56
+ select : name
52
57
} )
53
58
}
54
59
Original file line number Diff line number Diff line change @@ -2,20 +2,25 @@ import type { PopoverPosition } from '../../utils/popover'
2
2
3
3
import type { ListEventType , ListProps } from '../List/list'
4
4
5
+ export type SelectEventType = {
6
+ select : string
7
+ } & ListEventType
8
+
5
9
export type SelectProps = {
6
10
name : string
7
11
value ?: string
8
12
placeholder ?: string
9
13
label ?: string
10
14
subText ?: string
11
15
disabled ?: boolean
16
+ updateValue ?: boolean
12
17
position ?: PopoverPosition | 'modal'
13
18
} & ListProps
14
19
15
20
export type SvelteSelectProps = {
16
- onChange ?: ( event : ListEventType & { select : string } ) => void
21
+ onChange ?: ( event : SelectEventType ) => void
17
22
} & SelectProps
18
23
19
24
export type ReactSelectProps = {
20
- onChange ?: ( event : ListEventType & { select : string } ) => void
25
+ onChange ?: ( event : SelectEventType ) => void
21
26
} & SelectProps
You can’t perform that action at this time.
0 commit comments