From 6386c33f939b5fa310e8eb5a51412c6151de75d2 Mon Sep 17 00:00:00 2001 From: metonym Date: Sun, 26 Feb 2023 17:51:50 -0800 Subject: [PATCH] fix: `readonly` should override `error` behavior in `TextInput`, `NumberInput` (#1666) * fix(text-input): avoid overlapping readonly/invalid icons * fix(number-input): avoid overlapping readonly/invalid icons * fix: readonly inputs cannot be invalid Addresses https://github.com/carbon-design-system/carbon-components-svelte/pull/1666#pullrequestreview-1314558645 --- src/NumberInput/NumberInput.svelte | 23 ++++++++++++----------- src/TextInput/TextInput.svelte | 30 ++++++++++++++++-------------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/NumberInput/NumberInput.svelte b/src/NumberInput/NumberInput.svelte index 2b0f76ee..e917c303 100644 --- a/src/NumberInput/NumberInput.svelte +++ b/src/NumberInput/NumberInput.svelte @@ -128,7 +128,7 @@ $: incrementLabel = translateWithId("increment"); $: decrementLabel = translateWithId("decrement"); $: error = - invalid || + (invalid && !readonly) || (!allowEmpty && value == null) || value > max || (typeof value === "number" && value < min); @@ -191,8 +191,8 @@ type="number" pattern="[0-9]*" aria-describedby="{errorId}" - data-invalid="{invalid || undefined}" - aria-invalid="{invalid || undefined}" + data-invalid="{(error) || undefined}" + aria-invalid="{(error) || undefined}" aria-label="{label ? undefined : ariaLabel}" disabled="{disabled}" id="{id}" @@ -211,16 +211,17 @@ on:blur on:paste /> - {#if invalid} - - {/if} - {#if !invalid && warn} - - {/if} {#if readonly} + {:else} + {#if invalid} + + {/if} + {#if !invalid && warn} + + {/if} {/if} {#if !hideSteppers}
diff --git a/src/TextInput/TextInput.svelte b/src/TextInput/TextInput.svelte index bf1ac1db..5b8b184a 100644 --- a/src/TextInput/TextInput.svelte +++ b/src/TextInput/TextInput.svelte @@ -95,6 +95,7 @@ }; $: isFluid = !!ctx && ctx.isFluid; + $: error = invalid && !readonly; $: helperId = `helper-${id}`; $: errorId = `error-${id}`; $: warnId = `warn-${id}`; @@ -161,29 +162,30 @@ class:bx--text-input__field-outer-wrapper--inline="{inline}" >
- {#if invalid} - - {/if} - {#if !invalid && warn} - - {/if} {#if readonly} + {:else} + {#if invalid} + + {/if} + {#if !invalid && warn} + + {/if} {/if}