表單元素可讓您建立彈性且美觀的表單佈局。表單元素只是眾所周知的列表視圖(列表和 列表項目 Svelte 組件),但有一些額外的組件。
包含以下組件
ListInput
- 列表項目輸入元素名稱 | 類型 | 預設值 | 描述 |
---|---|---|---|
accept | 字串 | 數字 | 輸入的原始 "accept" 屬性的值 | |
autocapitalize | 字串 | 輸入的原始 "autocapitalize" 屬性的值 | |
autocomplete | 字串 | 輸入的原始 "autoComplete" 屬性的值 | |
autocorrect | 字串 | 輸入的原始 "autocorrect" 屬性的值 | |
autofocus | 布林值 | 輸入的原始 "autofocus" 屬性的值 | |
autosave | 字串 | 輸入的原始 "autosave" 屬性的值 | |
clearButton | 布林值 | false | 加入輸入清除按鈕 |
colors | 物件 | 帶有 Tailwind CSS 顏色類別的物件 | |
colors.bgIos | 字串 | '' | |
colors.bgMaterial | 字串 | 'bg-md-light-surface-variant dark:bg-md-dark-surface-variant' | |
colors.errorBorder | 字串 | 'border-red-500' | |
colors.errorText | 字串 | 'text-red-500' | |
colors.labelTextFocusIos | 字串 | '' | |
colors.labelTextFocusMaterial | 字串 | 'text-md-light-primary dark:text-md-dark-primary' | |
colors.labelTextIos | 字串 | '' | |
colors.labelTextMaterial | 字串 | 'text-md-light-on-surface-variant dark:text-md-dark-on-surface-variant' | |
colors.outlineBorderFocusIos | 字串 | 'border-primary' | |
colors.outlineBorderFocusMaterial | 字串 | 'border-md-light-primary dark:border-md-dark-primary' | |
colors.outlineBorderIos | 字串 | 'border-black border-opacity-30 dark:border-white dark:border-opacity-30' | |
colors.outlineBorderMaterial | 字串 | 'border-md-light-on-surface dark:border-md-dark-on-surface' | |
colors.outlineLabelBgIos | 字串 | 'bg-ios-light-surface-1 dark:bg-ios-dark-surface-1' | |
colors.outlineLabelBgMaterial | 字串 | 'bg-md-light-surface dark:bg-md-dark-surface' | |
component | 字串 | 'li' | 組件的 HTML 元素 |
disabled | 布林值 | 將輸入標記為停用 | |
dropdown | 布林值 | false | 渲染額外的下拉選單圖示(適用於搭配 |
error | 字串 | 輸入的 "錯誤" 內容 | |
floatingLabel | 布林值 | false | 製作浮動標籤 |
info | 字串 | 輸入的 "資訊" 內容 | |
inputClass | 字串 | 額外的輸入樣式 | |
inputId | 字串 | 輸入 id 屬性 | |
inputmode | 字串 | 輸入的原始 "inputmode" 屬性的值 | |
inputStyle | CSSProperties | 額外的輸入類別 | |
label | 字串 | 標籤內容 | |
max | 字串 | 數字 | 輸入的原始 "max" 屬性的值 | |
maxlength | 字串 | 數字 | 輸入的原始 "maxlength" 屬性的值 | |
min | 字串 | 數字 | 輸入的原始 "min" 屬性的值 | |
minlength | 字串 | 數字 | 輸入的原始 "minlength" 屬性的值 | |
multiple | 布林值 | 輸入的原始 "multiple" 屬性的值 | |
name | 字串 | 輸入名稱 | |
outline | 布林值 | undefined | 渲染外框樣式輸入(周圍帶有邊框),覆寫 |
outlineIos | 布林值 | false | 在 iOS 主題中渲染外框樣式輸入(周圍帶有邊框) |
outlineMaterial | 布林值 | false | 在 Material 主題中渲染外框樣式輸入(周圍帶有邊框) |
pattern | 字串 | 輸入的原始 "pattern" 屬性的值 | |
placeholder | 字串 | 數字 | 輸入預留位置 | |
readonly | 布林值 | 將輸入標記為唯讀 | |
required | 布林值 | 將輸入標記為必要 | |
size | 字串 | 數字 | 輸入的原始 "size" 屬性的值 | |
spellcheck | 字串 | 輸入的原始 "spellcheck" 屬性的值 | |
step | 字串 | 數字 | 輸入的原始 "step" 屬性的值 | |
tabindex | 字串 | 數字 | 輸入的原始 "tabindex" 屬性的值 | |
type | 字串 | 'text' | 輸入類型 |
value | 任何 | 輸入值 | |
onBlur | function(e) |
| |
onChange | function(e) |
| |
onClear | function(e) |
| |
onFocus | function(e) |
| |
onInput | function(e) |
|
名稱 | 描述 |
---|---|
error | 輸入的 "錯誤" 內容 |
info | 輸入的 "資訊" 內容 |
input | 自訂輸入元素 |
label | 標籤內容 |
media | 列表項目 "媒體" 區域的內容(例如,圖示) |
<script>import {Page,Navbar,NavbarBackLink,BlockTitle,List,ListInput,} from 'konsta/svelte';import DemoIcon from '../components/DemoIcon.svelte';let name = { value: '', changed: false };let demoValue = '';const onNameChange = (e) => {name = { value: e.target.value, changed: true };};const onDemoValueChange = (e) => {demoValue = e.target.value;};const onDemoValueClear = () => {demoValue = '';};</script><Page><Navbar title="Form Inputs" /><BlockTitle>Default</BlockTitle><List strongIos insetIos><ListInput label="Name" type="text" placeholder="Your name"><DemoIcon slot="media" /></ListInput><ListInput label="Password" type="password" placeholder="Your password"><DemoIcon slot="media" /></ListInput><ListInput label="E-mail" type="email" placeholder="Your e-mail"><DemoIcon slot="media" /></ListInput><ListInput label="URL" type="url" placeholder="URL"><DemoIcon slot="media" /></ListInput><ListInput label="Phone" type="tel" placeholder="Your phone number"><DemoIcon slot="media" /></ListInput><ListInputlabel="Gender"type="select"dropdowndefaultValue="Male"placeholder="Please choose..."><DemoIcon slot="media" /><option value="Male">Male</option><option value="Female">Female</option></ListInput><ListInputlabel="Birthday"type="date"defaultValue="2014-04-30"placeholder="Please choose..."><DemoIcon slot="media" /></ListInput><ListInputlabel="Date time"type="datetime-local"placeholder="Please choose..."><DemoIcon slot="media" /></ListInput><ListInputlabel="Textarea"type="textarea"placeholder="Bio"inputClass="!h-20 resize-none"><DemoIcon slot="media" /></ListInput></List><BlockTitle>Outline</BlockTitle><List strongIos insetIos><ListInput outline label="Name" type="text" placeholder="Your name"><DemoIcon slot="media" /></ListInput><ListInputoutlinelabel="Password"type="password"placeholder="Your password"><DemoIcon slot="media" /></ListInput><ListInput outline label="E-mail" type="email" placeholder="Your e-mail"><DemoIcon slot="media" /></ListInput><ListInput outline label="URL" type="url" placeholder="URL"><DemoIcon slot="media" /></ListInput><ListInput outline label="Phone" type="tel" placeholder="Your phone number"><DemoIcon slot="media" /></ListInput><ListInputoutlinelabel="Gender"type="select"dropdowndefaultValue="Male"placeholder="Please choose..."><DemoIcon slot="media" /><option value="Male">Male</option><option value="Female">Female</option></ListInput><ListInputoutlinelabel="Birthday"type="date"defaultValue="2014-04-30"placeholder="Please choose..."><DemoIcon slot="media" /></ListInput><ListInputoutlinelabel="Date time"type="datetime-local"placeholder="Please choose..."><DemoIcon slot="media" /></ListInput><ListInputoutlinelabel="Textarea"type="textarea"placeholder="Bio"inputClass="!h-20 resize-none"><DemoIcon slot="media" /></ListInput></List><BlockTitle>Floating Labels</BlockTitle><List strongIos insetIos><ListInput label="Name" floatingLabel type="text" placeholder="Your name"><DemoIcon slot="media" /></ListInput><ListInputlabel="Password"floatingLabeltype="password"placeholder="Your password"><DemoIcon slot="media" /></ListInput><ListInputlabel="E-mail"floatingLabeltype="email"placeholder="Your e-mail"><DemoIcon slot="media" /></ListInput><ListInput label="URL" floatingLabel type="url" placeholder="URL"><DemoIcon slot="media" /></ListInput><ListInputlabel="Phone"floatingLabeltype="tel"placeholder="Your phone number"><DemoIcon slot="media" /></ListInput></List><BlockTitle>Outline + Floating Labels</BlockTitle><List strongIos insetIos><ListInputoutlinelabel="Name"floatingLabeltype="text"placeholder="Your name"><DemoIcon slot="media" /></ListInput><ListInputoutlinelabel="Password"floatingLabeltype="password"placeholder="Your password"><DemoIcon slot="media" /></ListInput><ListInputoutlinelabel="E-mail"floatingLabeltype="email"placeholder="Your e-mail"><DemoIcon slot="media" /></ListInput><ListInput outline label="URL" floatingLabel type="url" placeholder="URL"><DemoIcon slot="media" /></ListInput><ListInputoutlinelabel="Phone"floatingLabeltype="tel"placeholder="Your phone number"><DemoIcon slot="media" /></ListInput></List><BlockTitle>Validation + Additional Info</BlockTitle><List strongIos insetIos><ListInputlabel="Name"type="text"placeholder="Your name"info="Basic string checking"value={name.value}error={name.changed && !name.value.trim()? 'Please specify your name': ''}onInput={onNameChange}><DemoIcon slot="media" /></ListInput></List><BlockTitle>Clear Button</BlockTitle><List strongIos insetIos><ListInputlabel="TV Show"type="text"placeholder="Your favorite TV show"info="Type something to see clear button"value={demoValue}clearButton={demoValue.length > 0}onInput={onDemoValueChange}onClear={onDemoValueClear}><DemoIcon slot="media" /></ListInput></List><BlockTitle>Icon + Input</BlockTitle><List strongIos insetIos><ListInput type="text" placeholder="Your name"><DemoIcon slot="media" /></ListInput><ListInput type="password" placeholder="Your password"><DemoIcon slot="media" /></ListInput><ListInput type="email" placeholder="Your e-mail"><DemoIcon slot="media" /></ListInput><ListInput type="url" placeholder="URL"><DemoIcon slot="media" /></ListInput></List><BlockTitle>Label + Input</BlockTitle><List strongIos insetIos><ListInput label="Name" type="text" placeholder="Your name" /><ListInput label="Password" type="password" placeholder="Your password" /><ListInput label="E-mail" type="email" placeholder="Your e-mail" /><ListInput label="URL" type="url" placeholder="URL" /></List><BlockTitle>Only Inputs</BlockTitle><List strongIos insetIos><ListInput type="text" placeholder="Your name" /><ListInput type="password" placeholder="Your password" /><ListInput type="email" placeholder="Your e-mail" /><ListInput type="url" placeholder="URL" /></List><BlockTitle>Inputs + Additional Info</BlockTitle><List strongIos insetIos><ListInput type="text" placeholder="Your name" info="Full name please" /><ListInputtype="password"placeholder="Your password"info="8 characters minimum"/><ListInputtype="email"placeholder="Your e-mail"info="Your work e-mail address"/><ListInput type="url" placeholder="URL" info="Your website URL" /></List></Page>