Skip to content

Commit eba6321

Browse files
committedDec 15, 2021
feat(TextField): add character counter
1 parent 032277d commit eba6321

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed
 

‎components/mdc/TextInput/TextField.svelte

+15-3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ let element = {}
1919
let mdcTextField = {}
2020
2121
$: mdcTextField.value = value
22+
$: width = `${element.offsetWidth}px`
2223
2324
onMount(() => {
2425
mdcTextField = new MDCTextField(element)
@@ -47,6 +48,10 @@ const focus = (node) => autofocus && node.focus()
4748
.mdc-text-field--label-floating .mdc-floating-label {
4849
margin-left: 0;
4950
}
51+
.mdc-text-field-helper-line {
52+
float: right;
53+
padding-right: 1rem;
54+
}
5055
</style>
5156

5257
<label
@@ -83,6 +88,13 @@ const focus = (node) => autofocus && node.focus()
8388
<span class="mdc-notched-outline__trailing" />
8489
</span>
8590
</label>
86-
{#if required && !value}
87-
<div class="required">*Required</div>
88-
{/if}
91+
<div style="width: {width};">
92+
{#if required && !value}
93+
<div class="required d-inline">*Required</div>
94+
{/if}
95+
{#if maxlength}
96+
<div class="mdc-text-field-helper-line">
97+
<div class="mdc-text-field-character-counter">0 / {maxlength}</div>
98+
</div>
99+
{/if}
100+
</div>

‎stories/TextField.stories.svelte

+3-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@ import { Meta, Template, Story } from '@storybook/addon-svelte-csf'
33
import { TextField } from '../components/mdc'
44
import { copyAndModifyArgs } from './helpers.js'
55
6-
let title = 'TextField'
7-
86
const args = {
9-
label: title,
107
'on:keydown': (event) => console.log('TextField keydown', event),
118
'on:keypress': (event) => (lastKey = event.key),
129
'on:keyup': (event) => console.log('TextField keyup', event),
@@ -27,7 +24,7 @@ let lastKey = ''
2724

2825
<Story name="Default" {args} />
2926

30-
<Story name="Required" args={copyAndModifyArgs(args, { required: true })} />
27+
<Story name="label" args={copyAndModifyArgs(args, { label: 'label' })} />
3128

3229
<Story name="Placeholder" args={copyAndModifyArgs(args, { placeholder: 'Enter text here' })} />
3330

@@ -38,3 +35,5 @@ let lastKey = ''
3835
<Story name="maxlength" args={copyAndModifyArgs(args, { maxlength: 50 })} />
3936

4037
<Story name="icon" args={copyAndModifyArgs(args, { icon: 'home' })} />
38+
39+
<Story name="Required" args={copyAndModifyArgs(args, { required: true })} />

0 commit comments

Comments
 (0)
Please sign in to comment.