fix(password-input): support invalid state when used in a FluidForm (#1371)

* fix(password-input): support invalid state when used in a `FluidForm`

* docs(fluid-form): add example "Invalid state"
This commit is contained in:
metonym 2022-06-25 08:17:19 -07:00 committed by GitHub
commit 6a3614bf55
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 79 additions and 39 deletions

View file

@ -1,15 +1,18 @@
<script>
import { FluidForm, FormGroup, TextInput, PasswordInput, Button,} from "carbon-components-svelte";
import {
FluidForm,
TextInput,
PasswordInput,
} from "carbon-components-svelte";
import Preview from "../../components/Preview.svelte";
</script>
### Fluid form
Note that the `inline` input variants cannot be used within a `FluidForm`.
<FluidForm>
<TextInput
labelText="User name"
placeholder="Enter user name..."
required />
<TextInput labelText="User name" placeholder="Enter user name..." required />
<PasswordInput
required
type="password"
@ -17,3 +20,7 @@
placeholder="Enter password..."
/>
</FluidForm>
### Invalid state
<FileSource src="/framed/FluidForm/FluidFormInvalid" />

View file

@ -0,0 +1,25 @@
<script>
import {
FluidForm,
TextInput,
PasswordInput,
} from "carbon-components-svelte";
let password = "";
let invalid = false;
$: invalid = !/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,}$/.test(password);
</script>
<FluidForm>
<TextInput labelText="User name" placeholder="Enter user name..." required />
<PasswordInput
bind:value="{password}"
invalid="{invalid}"
invalidText="Your password must be at least 6 characters as well as contain at least one uppercase, one lowercase, and one number."
required
type="password"
labelText="Password"
placeholder="Enter password..."
/>
</FluidForm>

View file

@ -192,6 +192,13 @@
on:blur
on:paste
/>
{#if isFluid && invalid}
<hr class="bx--text-input__divider" />
<div class="bx--form-requirement" id="{errorId}">
{invalidText}
</div>
{/if}
{#if !(isFluid && invalid)}
<button
type="button"
disabled="{disabled}"
@ -225,6 +232,7 @@
<View class="bx--icon-visibility-on" />
{/if}
</button>
{/if}
</div>
{#if !isFluid && invalid}
<div class:bx--form-requirement="{true}" id="{errorId}">