Skip to content

Commit 6045274

Browse files
committed
feat(TextArea): add required prop and story
1 parent d320bca commit 6045274

File tree

2 files changed

+12
-2
lines changed

2 files changed

+12
-2
lines changed

components/mdc/TextInput/TextArea.svelte

+10-2
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,19 @@ export let rows = 8
1212
export let maxlength = undefined
1313
export let autofocus = false
1414
export let rtl = false
15+
export let required = false
1516
1617
const labelID = generateRandomID('textarea-label-')
1718
1819
let element = {}
1920
let textarea = {}
2021
let height = ''
22+
let hasFocused = false
2123
2224
$: hasExceededMaxLength = maxlength && value.length > maxlength
2325
$: error = hasExceededMaxLength
24-
$: value && value !== ' ' && addOrRemoveInvalidClass(error, element)
26+
$: valueIsEmpty = value === ' ' || !value
27+
$: !valueIsEmpty && addOrRemoveInvalidClass(error, element)
2528
2629
onMount(() => {
2730
resize()
@@ -81,6 +84,7 @@ label {
8184
aria-describedby="{labelID}-helper-id"
8285
{rows}
8386
maxlength="524288"
87+
{required}
8488
{placeholder}
8589
bind:value
8690
use:focus
@@ -89,6 +93,7 @@ label {
8993
on:input={resize}
9094
on:keydown
9195
on:focus
96+
on:focus={() => (hasFocused = true)}
9297
on:blur
9398
/>
9499
{#if maxlength}
@@ -109,7 +114,10 @@ label {
109114
</span>
110115
</label>
111116
<div class="mdc-text-field-helper-line">
112-
<div class="mdc-text-field-helper-text" id="{labelID}-helper-id" aria-hidden="true">
117+
<div class="mdc-text-field-helper-text" class:opacity1={required} id="{labelID}-helper-id" aria-hidden="true">
118+
{#if required && valueIsEmpty}
119+
<span class="required" class:error={hasFocused}>*Required</span>
120+
{/if}
113121
{#if hasExceededMaxLength}
114122
<span class="error">Maximum {maxlength} characters</span>
115123
{/if}

stories/TextArea.stories.svelte

+2
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,5 @@ const args = {
3131
<Story name="rows" args={copyAndModifyArgs(args, { rows: 2 })} />
3232

3333
<Story name="Autofocus" args={copyAndModifyArgs(args, { autofocus: true })} />
34+
35+
<Story name="Required" args={copyAndModifyArgs(args, { required: true })} />

0 commit comments

Comments
 (0)