Merge pull request #275 from josefaidt/274-textinput-add-warn-prop

feat(text-input): add warn prop
This commit is contained in:
Eric Liu 2020-09-22 11:34:32 -07:00 committed by GitHub
commit 630fa7ddf9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 32 additions and 2 deletions

View file

@ -23,6 +23,11 @@ export const Default = () => ({
"Content of form validation UI (invalidText)", "Content of form validation UI (invalidText)",
"A valid value is required" "A valid value is required"
), ),
warn: boolean('Show warning state (warn)', false),
warnText: text(
'Warning state text (warnText)',
'This will overwrite your current settings'
),
placeholder: text("Placeholder text (placeholder)", "Placeholder text."), placeholder: text("Placeholder text (placeholder)", "Placeholder text."),
id: text("TextInput id", "text-input-id"), id: text("TextInput id", "text-input-id"),
name: text("TextInput name", "text-input-name"), name: text("TextInput name", "text-input-name"),

View file

@ -77,6 +77,18 @@
*/ */
export let invalidText = ""; export let invalidText = "";
/**
* Set to `true` to indicate an warning state
* @type {boolean} [warn=false]
*/
export let warn = false;
/**
* Specify the warning state text
* @type {string} [warnText=""]
*/
export let warnText = "";
/** /**
* Obtain a reference to the input HTML element * Obtain a reference to the input HTML element
* @type {null | HTMLInputElement} [ref=null] * @type {null | HTMLInputElement} [ref=null]
@ -90,8 +102,10 @@
export let required = false; export let required = false;
import WarningFilled16 from "carbon-icons-svelte/lib/WarningFilled16"; import WarningFilled16 from "carbon-icons-svelte/lib/WarningFilled16";
import WarningAltFilled16 from "carbon-icons-svelte/lib/WarningAltFilled16";
$: errorId = `error-${id}`; $: errorId = `error-${id}`;
$: warnId = `warn-${id}`;
</script> </script>
<div <div
@ -113,15 +127,22 @@
{/if} {/if}
<div <div
data-invalid="{invalid || undefined}" data-invalid="{invalid || undefined}"
data-warn="{warn || undefined}"
class:bx--text-input__field-wrapper="{true}"> class:bx--text-input__field-wrapper="{true}">
{#if invalid} {#if invalid}
<WarningFilled16 class="bx--text-input__invalid-icon" /> <WarningFilled16 class="bx--text-input__invalid-icon" />
{/if} {/if}
{#if !invalid && warn}
<WarningAltFilled16
class="bx--text-input__invalid-icon
bx--text-input__invalid-icon--warning" />
{/if}
<input <input
bind:this="{ref}" bind:this="{ref}"
data-invalid="{invalid || undefined}" data-invalid="{invalid || undefined}"
aria-invalid="{invalid || undefined}" aria-invalid="{invalid || undefined}"
aria-describedby="{invalid ? errorId : undefined}" data-warn="{warn || undefined}"
aria-describedby="{invalid ? errorId : warn ? warnId : undefined}"
disabled="{disabled}" disabled="{disabled}"
id="{id}" id="{id}"
name="{name}" name="{name}"
@ -132,6 +153,7 @@
class:bx--text-input="{true}" class:bx--text-input="{true}"
class:bx--text-input--light="{light}" class:bx--text-input--light="{light}"
class:bx--text-input--invalid="{invalid}" class:bx--text-input--invalid="{invalid}"
class:bx--text-input--warn="{warn}"
class="{size && `bx--text-input--${size}`}" class="{size && `bx--text-input--${size}`}"
on:change on:change
on:input on:input
@ -142,7 +164,7 @@
on:focus on:focus
on:blur /> on:blur />
</div> </div>
{#if !invalid && helperText} {#if !invalid && !warn && helperText}
<div <div
class:bx--form__helper-text="{true}" class:bx--form__helper-text="{true}"
class:bx--form__helper-text--disabled="{disabled}"> class:bx--form__helper-text--disabled="{disabled}">
@ -152,4 +174,7 @@
{#if invalid} {#if invalid}
<div class:bx--form-requirement="{true}" id="{errorId}">{invalidText}</div> <div class:bx--form-requirement="{true}" id="{errorId}">{invalidText}</div>
{/if} {/if}
{#if !invalid && warn}
<div class:bx--form-requirement="{true}" id="{warnId}">{warnText}</div>
{/if}
</div> </div>