diff --git a/.changeset/dirty-snails-obey.md b/.changeset/dirty-snails-obey.md new file mode 100644 index 0000000000..97e433e80f --- /dev/null +++ b/.changeset/dirty-snails-obey.md @@ -0,0 +1,8 @@ +--- +"@stackoverflow/stacks-svelte": patch +--- + +chore(textinput/textarea): upgrade to Svelte 5 syntax + +BREAKING CHANGES: +* The message, description, and fill slots have been replaced with snippets. diff --git a/MIGRATION_GUIDE.md b/MIGRATION_GUIDE.md index f44d59687f..d195768103 100755 --- a/MIGRATION_GUIDE.md +++ b/MIGRATION_GUIDE.md @@ -39,6 +39,11 @@ - The variant `Muted` has been removed, `Tonal` has been added - `s-btn__md` has been removed, `s-btn__lg` has been added +#### Inputs +- `s-input__md` removed +- `s-input__xl` removed +- **Nested inputs** html will require slight tweaking on consumers' side + #### Menu The menu component has been updated to use new class names and structure. The following changes are breaking: @@ -105,6 +110,10 @@ The menu component has been updated to use new class names and structure. The fo - `.s-tag__xs` removed - `.s-tag__md` removed +#### Textarea +- `s-textarea__md` removed +- `s-textarea__xl` removed + # Migrating from Stacks Svelte v0 to v1 ## Breaking changes diff --git a/packages/stacks-svelte/src/components/TextArea/TextArea.stories.svelte b/packages/stacks-svelte/src/components/TextArea/TextArea.stories.svelte index 3b8ed574f6..2483f88fe4 100644 --- a/packages/stacks-svelte/src/components/TextArea/TextArea.stories.svelte +++ b/packages/stacks-svelte/src/components/TextArea/TextArea.stories.svelte @@ -81,7 +81,9 @@ label={`${state || "default"} input`} {state} > - {state || "default"} message + {#snippet message()} + {state || "default"} message + {/snippet} {/each} @@ -90,21 +92,17 @@
-
-
@@ -135,20 +133,24 @@ - + +

The examples below show all the snippets this component supports.

-
-
diff --git a/packages/stacks-svelte/src/components/TextArea/TextArea.svelte b/packages/stacks-svelte/src/components/TextArea/TextArea.svelte index e5c317598c..d228184d7b 100644 --- a/packages/stacks-svelte/src/components/TextArea/TextArea.svelte +++ b/packages/stacks-svelte/src/components/TextArea/TextArea.svelte @@ -4,6 +4,8 @@
- {#if $$slots.description} + {#if description}

- + {@render description()}

{/if}
{#if state}
@@ -163,10 +176,10 @@ {/if}
- {#if $$slots.message} + {#if message}

- + {@render message()}

{/if}
diff --git a/packages/stacks-svelte/src/components/TextArea/TextArea.test.ts b/packages/stacks-svelte/src/components/TextArea/TextArea.test.ts index ab2302ee11..af5c4effe5 100644 --- a/packages/stacks-svelte/src/components/TextArea/TextArea.test.ts +++ b/packages/stacks-svelte/src/components/TextArea/TextArea.test.ts @@ -127,9 +127,7 @@ describe("TextArea", () => { render(TextArea, { id: "example-input", label: "example label", - $$slots: { - description: snippet, - }, + description: snippet, }); expect(screen.getByText("test snippet").parentElement).to.have.class( @@ -141,9 +139,7 @@ describe("TextArea", () => { render(TextArea, { id: "example-input", label: "example label", - $$slots: { - message: snippet, - }, + message: snippet, }); expect(screen.getByText("test snippet").parentElement).to.have.class( diff --git a/packages/stacks-svelte/src/components/TextInput/TextInput.stories.svelte b/packages/stacks-svelte/src/components/TextInput/TextInput.stories.svelte index ef6f39a782..2c052f2d9f 100644 --- a/packages/stacks-svelte/src/components/TextInput/TextInput.stories.svelte +++ b/packages/stacks-svelte/src/components/TextInput/TextInput.stories.svelte @@ -66,7 +66,9 @@ label="{fillSide}ed fill" {fillSide} > - {fillSide}ed fill + {#snippet fill()} + {fillSide}ed fill + {/snippet}
{/each} @@ -113,7 +115,9 @@ label={`${state || "default"} input`} {state} > - {state || "default"} message + {#snippet message()} + {state || "default"} message + {/snippet} {/each} @@ -122,21 +126,17 @@
-
- -
+ > + {#snippet description()} + this input has been marked required. + {/snippet} +
@@ -182,25 +182,31 @@
- + +

The examples below show all the snippets this component supports.

- - - This TextInput includes a description slot. - + + {#snippet description()} + This TextInput includes a description snippet. + {/snippet}
- - - This TextInput includes a message slot. - + + {#snippet message()} + This TextInput includes a message snippet. + {/snippet}
- - https:// + + {#snippet fill()} + https:// + {/snippet}
diff --git a/packages/stacks-svelte/src/components/TextInput/TextInput.svelte b/packages/stacks-svelte/src/components/TextInput/TextInput.svelte index 3e945f9224..e981ff856e 100644 --- a/packages/stacks-svelte/src/components/TextInput/TextInput.svelte +++ b/packages/stacks-svelte/src/components/TextInput/TextInput.svelte @@ -19,8 +19,11 @@
- {#if $$slots.description} + {#if description}

- + {@render description()}

{/if}
- {#if $$slots.fill} + {#if fill}
- + {@render fill()}
{/if} @@ -184,31 +222,24 @@ {#if state} @@ -225,10 +256,10 @@
- {#if $$slots.message} + {#if message}

- + {@render message()}

{/if} diff --git a/packages/stacks-svelte/src/components/TextInput/TextInput.test.ts b/packages/stacks-svelte/src/components/TextInput/TextInput.test.ts index 2959e1db05..825df08c8e 100644 --- a/packages/stacks-svelte/src/components/TextInput/TextInput.test.ts +++ b/packages/stacks-svelte/src/components/TextInput/TextInput.test.ts @@ -36,9 +36,7 @@ describe("TextInput", () => { render(TextInput, { id: "example-input", label: "example label", - $$slots: { - fill: snippet, - }, + fill: snippet, }); expect(screen.getByRole("textbox")).to.have.class("blr0"); expect(screen.getByText("test snippet").parentElement).to.have.class( @@ -51,9 +49,7 @@ describe("TextInput", () => { id: "example-input", label: "example label", fillSide: "append", - $$slots: { - fill: snippet, - }, + fill: snippet, }); expect(screen.getByRole("textbox")).to.have.class("brr0"); @@ -182,9 +178,7 @@ describe("TextInput", () => { render(TextInput, { id: "example-input", label: "example label", - $$slots: { - description: snippet, - }, + description: snippet, }); expect(screen.getByText("test snippet").parentElement).to.have.class( @@ -196,9 +190,7 @@ describe("TextInput", () => { render(TextInput, { id: "example-input", label: "example label", - $$slots: { - fill: snippet, - }, + fill: snippet, }); expect(screen.getByText("test snippet").parentElement).to.have.class( @@ -210,9 +202,7 @@ describe("TextInput", () => { render(TextInput, { id: "example-input", label: "example label", - $$slots: { - message: snippet, - }, + message: snippet, }); expect(screen.getByText("test snippet").parentElement).to.have.class(