Skip to content

Commit 8f7380b

Browse files
committed
feat(Select): Add Select.name for convenient form submission
1 parent 3d8f95d commit 8f7380b

File tree

3 files changed

+16
-2
lines changed

3 files changed

+16
-2
lines changed

components/mdc/Select/Select.svelte

+3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ export let selectedID = ''
1919
export let required = false
2020
/** @type {boolean} applies the mdc-select--invalid class */
2121
export let showError = false
22+
/** @type {string} a name for the hidden input field for form submission*/
23+
export let name = ''
2224
2325
const dispatch = createEventDispatcher()
2426
const labelID = generateRandomID('select-label-')
@@ -72,6 +74,7 @@ afterUpdate(() => {
7274
bind:this={element}
7375
style="width: {width}"
7476
>
77+
<input {required} type="hidden" {name} />
7578
<div
7679
class="mdc-select__anchor"
7780
aria-required={required}

index.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ declare module '@silintl/ui-components' {
237237
interface SelectProps {
238238
disabled?: boolean
239239
label?: string
240+
name?: string
240241
options?: { name: string; id: string }[]
241242
required?: boolean
242243
showError?: boolean

stories/Select.stories.svelte

+12-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<script>
22
import { Meta, Template, Story } from '@storybook/addon-svelte-csf'
3-
import { Select } from '../components/mdc'
3+
import { Button, Select, Snackbar, setNotice } from '../components/mdc'
44
import { copyAndModifyArgs } from './helpers.js'
5+
import { Form } from '../components/custom'
56
67
const args = {
78
options: [
@@ -21,7 +22,14 @@ const args = {
2122
<Meta title="Atoms/Select" component={Select} />
2223

2324
<Template let:args>
24-
<Select {...args} on:change={args['on:change']} on:populated={args['on:populated']} />
25+
<Form on:submit={(e) => setNotice('submitted')}>
26+
<p>
27+
<Select {...args} on:change={args['on:change']} on:populated={args['on:populated']} />
28+
</p>
29+
<Button raised>Submit</Button>
30+
</Form>
31+
32+
<Snackbar />
2533
</Template>
2634

2735
<Story name="Default" {args} />
@@ -37,3 +45,5 @@ const args = {
3745
<Story name="required" args={copyAndModifyArgs(args, { required: true })} />
3846

3947
<Story name="showError" args={copyAndModifyArgs(args, { showError: true })} />
48+
49+
<Story name="name" args={copyAndModifyArgs(args, { name: 'category' })} />

0 commit comments

Comments
 (0)