Skip to content

Commit 4568ca7

Browse files
authored
fix(TextField): Remove inputHolder.input object property setter workaround for Input/textarea bind:this type differences as solution to fix Vite dev server freezing. Resolve #546 (#549)
* fix(TextField): Remove `inputHolder.input` object property setter workaround for Input/textarea `bind:this` type differences as solution to fix Vite dev server freezing. Resolve #546 * fix(Input): Update `applyMask(el)` type to include `HTMLTextAreaElement`
1 parent aabf929 commit 4568ca7

File tree

3 files changed

+8
-9
lines changed

3 files changed

+8
-9
lines changed

.changeset/many-numbers-call.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte-ux': patch
3+
---
4+
5+
fix(TextField): Remove `inputHolder.input` object property setter workaround for Input/textarea `bind:this` type differences as solution to fix Vite dev server freezing

packages/svelte-ux/src/lib/components/Input.svelte

+2-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
export let inputmode: HTMLInputAttributes['inputmode'] | undefined = undefined;
1919
export let id: string | undefined = undefined;
2020
export let actions: Actions<HTMLInputElement | HTMLTextAreaElement> | undefined = undefined;
21-
export let inputEl: HTMLInputElement | null = null;
21+
export let inputEl: HTMLInputElement | HTMLTextAreaElement | null = null;
2222
export let autocapitalize: HTMLInputAttributes['autocapitalize'] = undefined;
2323
let className: string | undefined = undefined;
2424
export { className as class };
@@ -84,7 +84,7 @@
8484
dispatch('change', { value });
8585
}
8686
87-
function applyMask(el: HTMLInputElement, mask: string) {
87+
function applyMask(el: HTMLInputElement | HTMLTextAreaElement, mask: string) {
8888
if (mask) {
8989
// For selection (including just cursor position), ...
9090
const [i, j] = [el.selectionStart, el.selectionEnd].map((i) => {

packages/svelte-ux/src/lib/components/TextField.svelte

+1-7
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,6 @@
6060
: undefined;
6161
export let operators: { label: string; value: string }[] | undefined = undefined;
6262
export let inputEl: HTMLInputElement | HTMLTextAreaElement | null = null;
63-
// this is a workaround because Input only accepts an HTMLInputElement, not a TextAreaElement
64-
const inputHolder = {
65-
set input(value: HTMLInputElement | null) {
66-
inputEl = value;
67-
},
68-
};
6963
export let debounceChange: boolean | number = false;
7064
export let classes: {
7165
root?: string;
@@ -371,7 +365,7 @@
371365
{max}
372366
{step}
373367
{actions}
374-
bind:inputEl={inputHolder.input}
368+
bind:inputEl
375369
on:input={handleInput}
376370
on:focus
377371
on:blur

0 commit comments

Comments
 (0)