feat(TextArea): adding warn, warnText properties to TextArea

This commit is contained in:
István Pató 2022-01-08 13:24:15 +01:00
commit 3ca9fd5657
No known key found for this signature in database
GPG key ID: 3A842123BFF8E969
3 changed files with 49 additions and 2 deletions

View file

@ -11393,6 +11393,28 @@
"constant": false, "constant": false,
"reactive": false "reactive": false
}, },
{
"name": "warn",
"kind": "let",
"description": "Set to `true` to indicate an warning state",
"type": "boolean",
"value": "false",
"isFunction": false,
"isFunctionDeclaration": false,
"constant": false,
"reactive": false
},
{
"name": "warnText",
"kind": "let",
"description": "Specify the warning state text",
"type": "string",
"value": "\"\"",
"isFunction": false,
"isFunctionDeclaration": false,
"constant": false,
"reactive": false
},
{ {
"name": "id", "name": "id",
"kind": "let", "kind": "let",

View file

@ -31,6 +31,10 @@ components: ["TextArea", "TextAreaSkeleton"]
<TextArea invalid invalidText="Only plain text characters are allowed" labelText="App description" placeholder="Enter a description..." /> <TextArea invalid invalidText="Only plain text characters are allowed" labelText="App description" placeholder="Enter a description..." />
### Warning state
<TextArea warn warnText="It is recommended to enter a longer description" labelText="App description" placeholder="Enter a description..." />
### Disabled state ### Disabled state
<TextArea disabled labelText="App description" placeholder="Enter a description..." /> <TextArea disabled labelText="App description" placeholder="Enter a description..." />

View file

@ -32,6 +32,12 @@
/** Specify the text for the invalid state */ /** Specify the text for the invalid state */
export let invalidText = ""; export let invalidText = "";
/** Set to `true` to indicate an warning state */
export let warn = false;
/** Specify the warning state text */
export let warnText = "";
/** Set an id for the textarea element */ /** Set an id for the textarea element */
export let id = "ccs-" + Math.random().toString(36); export let id = "ccs-" + Math.random().toString(36);
@ -45,8 +51,10 @@
export let ref = null; export let ref = null;
import WarningFilled16 from "../icons/WarningFilled16.svelte"; import WarningFilled16 from "../icons/WarningFilled16.svelte";
import WarningAltFilled16 from "../icons/WarningAltFilled16.svelte";
$: errorId = `error-${id}`; $: errorId = `error-${id}`;
$: warnId = `warn-${id}`;
</script> </script>
<!-- svelte-ignore a11y-mouse-events-have-key-events --> <!-- svelte-ignore a11y-mouse-events-have-key-events -->
@ -72,14 +80,23 @@
<div <div
class:bx--text-area__wrapper="{true}" class:bx--text-area__wrapper="{true}"
data-invalid="{invalid || undefined}" data-invalid="{invalid || undefined}"
data-warn="{warn || undefined}"
> >
{#if invalid} {#if invalid}
<WarningFilled16 class="bx--text-area__invalid-icon" /> <WarningFilled16 class="bx--text-area__invalid-icon" />
{/if} {/if}
{#if !invalid && warn}
<WarningAltFilled16
class="bx--text-area__invalid-icon
bx--text-area__invalid-icon--warning"
/>
{/if}
<textarea <textarea
bind:this="{ref}" bind:this="{ref}"
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}"
@ -90,6 +107,7 @@
class:bx--text-area="{true}" class:bx--text-area="{true}"
class:bx--text-area--light="{light}" class:bx--text-area--light="{light}"
class:bx--text-area--invalid="{invalid}" class:bx--text-area--invalid="{invalid}"
class:bx--text-area--warn="{warn}"
{...$$restProps} {...$$restProps}
readonly="{$$restProps.readonly === true ? true : undefined}" readonly="{$$restProps.readonly === true ? true : undefined}"
on:change on:change
@ -102,7 +120,7 @@
on:focus on:focus
on:blur></textarea> on:blur></textarea>
</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}"
@ -113,4 +131,7 @@
{#if invalid} {#if invalid}
<div id="{errorId}" class:bx--form-requirement="{true}">{invalidText}</div> <div id="{errorId}" class:bx--form-requirement="{true}">{invalidText}</div>
{/if} {/if}
{#if !invalid && warn}
<div id="{warnId}" class:bx--form-requirement="{true}">{warnText}</div>
{/if}
</div> </div>