В SvelteKit UI библиотеках компоненты ввода текста —
Input и Textarea — играют ключевую роль в
создании интерактивных форм. Их использование выходит за рамки
стандартных HTML-элементов благодаря интеграции с реактивностью Svelte,
валидацией и расширяемым API для стилизации и функциональности.
InputКомпонент Input позволяет создавать текстовые поля с
поддержкой различных типов ввода:
"text",
"email", "password", "number",
"tel" и другие. Правильная установка типа влияет на
встроенную валидацию браузера и виртуальную клавиатуру на мобильных
устройствах.bind:value.Пример использования с двусторонней привязкой:
<script>
let username = '';
</script>
<Input
type="text"
placeholder="Введите имя пользователя"
bind:value={username}
/>
<p>Текущий ввод: {username}</p>
TextareaTextarea применяется для ввода многострочного текста.
Ключевые свойства:
"none", "both",
"vertical", "horizontal")."soft"
или "hard").Input.Пример Textarea с автоизменением размера по
содержимому:
<script>
import { onMount } from 'svelte';
let comment = '';
let textareaElement;
const adjustHeight = () => {
textareaElement.style.height = 'auto';
textareaElement.style.height = textareaElement.scrollHeight + 'px';
};
$: adjustHeight();
</script>
<Textarea
bind:this={textareaElement}
bind:value={comment}
placeholder="Введите комментарий"
rows="3"
/>
<p>Длина текста: {comment.length} символов</p>
Большинство SvelteKit UI библиотек предоставляют встроенные стили и возможность кастомизации через классы или пропсы:
"outlined", "filled"."sm",
"md", "lg".Пример стилизации Input с состоянием ошибки:
<Input
type="email"
bind:value={email}
placeholder="Email"
class:error={email && !email.includes('@')}
/>
{#if email && !email.includes('@')}
<span class="error-message">Некорректный email</span>
{/if}
SvelteKit UI библиотеки позволяют интегрировать валидацию непосредственно в компонент:
on:input,
on:change, on:blur для отслеживания действий
пользователя.$: для
автоматического обновления состояния формы.Input и Textarea через
bind:value и кастомные функции.Пример простой реактивной валидации:
<script>
let password = '';
$: isValid = password.length >= 8;
</script>
<Input
type="password"
bind:value={password}
placeholder="Пароль"
/>
<p class:is-invalid={!isValid}>Пароль должен содержать минимум 8 символов</p>
Input и Textarea легко интегрируются с
<form> и механикой отправки данных:
submit.Пример отправки формы:
<script>
let formData = { username: '', comment: '' };
const handleSubmit = (event) => {
event.preventDefault();
console.log('Отправка данных:', formData);
};
</script>
<form on:submit={handleSubmit}>
<Input type="text" placeholder="Имя" bind:value={formData.username}/>
<Textarea placeholder="Комментарий" bind:value={formData.comment}/>
<button type="submit">Отправить</button>
</form>
SvelteKit UI библиотеки обеспечивают возможность создания обёрток и
кастомных компонентов на основе Input и
Textarea:
Пример с иконкой внутри Input:
<div class="input-with-icon">
<Input type="text" placeholder="Поиск" bind:value={query}/>
<span class="icon-search"></span>
</div>
Использование таких подходов позволяет создавать богатые формы с минимальным кодом, сохраняя реактивность и удобство управления состоянием.
Input и Textarea в SvelteKit UI библиотеках
— это не просто поля ввода, а полнофункциональные компоненты,
интегрированные с реактивной моделью, позволяющие создавать сложные,
динамичные и стилизованные формы. Их богатый API и гибкость обеспечивают
высокую продуктивность и удобство разработки фронтенд-интерфейсов.