入力 / フォーム要素 Svelte コンポーネント
フォーム要素を使用すると、柔軟で美しいフォームレイアウトを作成できます。 フォーム要素はよく知られているリストビュー(リストおよびリストアイテム Svelteコンポーネント)ですが、いくつかの追加コンポーネントがあります。
Framework7 の入力 / フォーム要素で外観を確認してください。
入力コンポーネント
以下のコンポーネントが含まれています
ListInput
- リストアイテム入力要素Input
- 入力要素
入力プロパティ
プロパティ | タイプ | デフォルト | 説明 |
---|---|---|---|
<ListInput> プロパティ | |||
media | 文字列 | リストアイテムメディア画像 URL | |
label | 文字列 | 入力のラベルテキスト | |
floatingLabel | 真偽値 | false | フローティングラベルを有効にします |
outline | 真偽値 | false | 入力をアウトラインにします |
input | 真偽値 | true | 入力要素をレンダリングするかどうか。 内部でカスタム入力を使用する場合は無効にします。 |
type | 文字列 | 入力タイプ。 すべてのデフォルトの HTML5 入力タイプ、およびいくつかの特別なタイプ | |
resizable | 真偽値 | false | textarea をサイズ変更可能にする |
inputStyle | オブジェクト | 追加のスタイルを渡す必要がある場合の、入力の「style」属性の値 | |
clearButton | 真偽値 | false | クリックすると入力値をクリアする入力クリアボタンを追加します |
validate | 真偽値 | false | 有効にすると、渡された「パターン」または入力タイプに基づいて、変更時に入力値が検証されます。 カスタム検証を使用し、エラーメッセージを表示/非表示にする場所をより詳細に制御する必要がある場合は、検証を無効にし、 `error-message` と `error-message-force` プロパティを一緒に使用することをお勧めします。 |
validateOnBlur | 真偽値 | false | 有効にすると、入力はぼかしでのみ検証されます。 |
onValidate | 関数 | 入力検証時に実行されるコールバック。 入力が有効かどうかを示すブール値を返します。
| |
errorMessage | 文字列 | 入力値が無効な場合に表示するカスタムエラーメッセージ | |
errorMessageForce | 真偽値 | false | エラーメッセージを `errorMessage` に強制します. カスタム検証を使用し、必要なときにエラーメッセージを表示/非表示にしたい場合に役立ちます |
info | 文字列 | 入力に関する追加情報のカスタムテキスト | |
name | 文字列 | 入力名 | |
placeholder | 文字列 | 入力プレースホルダー | |
id | 文字列 | ラッピング要素 ID 属性 | |
inputId | 文字列 | 入力要素 ID 属性 | |
value | 文字列 数値 | 入力値。 `type="datepicker"` の場合、値はカレンダーが受け入れるものとして渡す必要があります - 日付の配列、たとえば `value={[new Date()]` `type="colorpicker"` の場合、値はカラーピッカーが受け入れるものとして渡す必要があります - 色のオブジェクト、たとえば `value={{hex: '#ff0000'}}` `type="texteditor"` の場合、値は HTML 文字列にする必要があります | |
inputmode | 文字列 | 入力のネイティブ「inputmode」属性の値 | |
size | 文字列 数値 | 入力のネイティブ「size」属性の値 | |
pattern | 文字列 | 入力のネイティブ「pattern」属性の値 | |
accept | 文字列 数値 | 入力のネイティブ「accept」属性の値 | |
autocomplete | 文字列 | 入力のネイティブ「autocomplete」属性の値 | |
autofocus | 真偽値 | false | 入力のネイティブ「autofocus」属性の値 |
autosave | 文字列 | 入力のネイティブ「autosave」属性の値 | |
disabled | 真偽値 | false | 入力を無効としてマークします |
max | 文字列 数値 | 入力のネイティブ「max」属性の値 | |
min | 文字列 数値 | 入力のネイティブ「min」属性の値 | |
step | 文字列 数値 | 入力のネイティブ「step」属性の値 | |
maxlength | 文字列 数値 | 入力のネイティブ「maxlength」属性の値 | |
minlength | 文字列 数値 | 入力のネイティブ「minlength」属性の値 | |
multiple | 真偽値 | false | 入力のネイティブ「multiple」属性の値 |
readonly | 真偽値 | false | 入力を読み取り専用としてマークします |
required | 真偽値 | false | 入力を必須としてマークします |
tabindex | 文字列 数値 | 入力のネイティブ「tabindex」属性の値 | |
noStoreData | 真偽値 | false | フォームストレージと併用する場合、入力値の保存を無視できます |
ignoreStoreData | 真偽値 | false | 上記と同じ |
wrap | 真偽値 | true | 有効にすると、 `<li>` 要素でラップされます |
calendarParams | オブジェクト | `type="datepicker"` の場合に使用されるカレンダーパラメーターを持つオブジェクト | |
colorPickerParams | オブジェクト | `type="colorpicker"` の場合に使用されるカラーピッカーパラメーターを持つオブジェクト | |
textEditorParams | オブジェクト | `type="texteditor"` の場合に使用されるテキストエディタパラメーターを持つオブジェクト | |
<Input> プロパティ | |||
outline | 真偽値 | false | 入力をアウトラインにします |
wrap | 真偽値 | true | 入力を `<div class="input">` 要素でラップするかどうかを定義します. |
type | 文字列 | 入力タイプ。 すべてのデフォルトの HTML5 入力タイプ、およびいくつかの特別なタイプ | |
resizable | 真偽値 | false | textarea をサイズ変更可能にする |
inputStyle | オブジェクト | 追加のスタイルを渡す必要がある場合の、入力の「style」属性の値 | |
clearButton | 真偽値 | false | クリックすると入力値をクリアする入力クリアボタンを追加します |
validate | 真偽値 | false | 有効にすると、渡された「パターン」または入力タイプに基づいて、変更時に入力値が検証されます。 カスタム検証を使用し、エラーメッセージを表示/非表示にする場所をより詳細に制御する必要がある場合は、検証を無効にし、 `error-message` と `error-message-force` プロパティを一緒に使用することをお勧めします。 |
validateOnBlur | 真偽値 | false | 有効にすると、入力はぼかしでのみ検証されます。 |
onValidate | 関数 | 入力検証時に実行されるコールバック。 入力が有効かどうかを示すブール値を返します。
| |
errorMessage | 文字列 | 入力値が無効な場合に表示するカスタムエラーメッセージ | |
errorMessageForce | 真偽値 | false | エラーメッセージを `errorMessage` に強制します. カスタム検証を使用し、必要なときにエラーメッセージを表示/非表示にしたい場合に役立ちます |
info | 文字列 | 入力に関する追加情報のカスタムテキスト | |
name | 文字列 | 入力名 | |
placeholder | 文字列 | 入力プレースホルダー | |
id | 文字列 | ラッピング要素 ID 属性 | |
inputId | 文字列 | 入力要素 ID 属性 | |
value | 文字列 数値 | 入力値。 `type="datepicker"` の場合、値はカレンダーが受け入れるものとして渡す必要があります - 日付の配列、たとえば `value={[new Date()]` `type="colorpicker"` の場合、値はカラーピッカーが受け入れるものとして渡す必要があります - 色のオブジェクト、たとえば `value={{hex: '#ff0000'}}` `type="texteditor"` の場合、値は HTML 文字列にする必要があります | |
inputmode | 文字列 | 入力のネイティブ「inputmode」属性の値 | |
size | 文字列 数値 | 入力のネイティブ「size」属性の値 | |
pattern | 文字列 | 入力のネイティブ「pattern」属性の値 | |
accept | 文字列 数値 | 入力のネイティブ「accept」属性の値 | |
autocomplete | 文字列 | 入力のネイティブ「autocomplete」属性の値 | |
autofocus | 真偽値 | false | 入力のネイティブ「autofocus」属性の値 |
autosave | 文字列 | 入力のネイティブ「autosave」属性の値 | |
checked | 真偽値 | false | 入力をチェック済みとしてマークします |
disabled | 真偽値 | false | 入力を無効としてマークします |
max | 文字列 数値 | 入力のネイティブ「max」属性の値 | |
min | 文字列 数値 | 入力のネイティブ「min」属性の値 | |
step | 文字列 数値 | 入力のネイティブ「step」属性の値 | |
maxlength | 文字列 数値 | 入力のネイティブ「maxlength」属性の値 | |
minlength | 文字列 数値 | 入力のネイティブ「minlength」属性の値 | |
multiple | 真偽値 | false | 入力のネイティブ「multiple」属性の値 |
readonly | 真偽値 | false | 入力を読み取り専用としてマークします |
required | 真偽値 | false | 入力を必須としてマークします |
tabindex | 文字列 数値 | 入力のネイティブ「tabindex」属性の値 | |
noStoreData | 真偽値 | false | フォームストレージと併用する場合、入力値の保存を無視できます |
ignoreStoreData | 真偽値 | false | 上記と同じ |
calendarParams | オブジェクト | `type="datepicker"` の場合に使用されるカレンダーパラメーターを持つオブジェクト | |
colorPickerParams | オブジェクト | `type="colorpicker"` の場合に使用されるカラーピッカーパラメーターを持つオブジェクト | |
textEditorParams | オブジェクト | `type="texteditor"` の場合に使用されるテキストエディタパラメーターを持つオブジェクト |
入力イベント
イベント | 引数 | 説明 |
---|---|---|
<ListInput>、<Input> イベント | ||
focus | (event) | ユーザーが入力にフォーカスしたときに発生します。 |
blur | (event) | ユーザーが入力からフォーカスを失ったときに発生します。 |
input | (event) | 入力値が変更されるとすぐに発生します。 注:入力イベントは、beforeinput、keypress、keyup、keydown イベントの後に発生します。 |
change | (event) | 値が変更された場合、ぼかしで発生します。 |
inputClear | (event) | 入力クリアボタンをクリックしたときに発生します |
textareaResize | (event) | サイズ変更可能な textarea のサイズが変更された場合に発生します。 `event.detail` には、 `initialHeight`、 `currentHeight`、 `scrollHeight` プロパティを持つオブジェクトが含まれます |
inputEmpty | (event) | 入力値が空になったときに発生します |
inputNotEmpty | (event) | 入力値が空でなくなったときに発生します |
calendarChange | (value) | `type="datepicker"` カレンダーの値が変更されたときに発生します。 引数として、選択された日付の配列を受け取ります。 |
colorPickerChange | (value) | `type="colorpicker"` カラーピッカーの値が変更されたときに発生します。 引数として、カラーピッカー値を持つオブジェクトを受け取ります。 |
textEditorChange | (value) | `type="texteditor"` テキストエディタの値が変更されたときに発生します。 引数として、テキストエディタ値(HTML 文字列)を受け取ります。 |
入力スロット
`<ListInput>` には、カスタム要素用の追加スロットがあります
- `default` - `type="select"` または `type="textarea"` の場合 - 要素は `select` または `textarea` タグの内部に配置されます。
- `info` - 要素は情報メッセージを含むコンテナに挿入されます
- `error-message` - 要素はエラーメッセージを含むコンテナに挿入されます
- `label` - 要素は入力のラベルを含むコンテナに挿入されます
- `input` - 要素は入力要素の代わりに挿入されます( `input` プロパティも `false` に設定する必要があります)
- `root-start` - 要素は `<li>` 要素の先頭に挿入されます
- `root` / `root-end` - 要素は `<li>` 要素の最後に挿入されます
- `content-start` - 要素は `<div class="item-content">` 要素の先頭に挿入されます
- `content` / `content-end` - 要素は `<div class="item-content">` 要素の最後に挿入されます
- `inner-start` - 要素は `<div class="item-inner">` 要素の先頭に挿入されます
- `inner` / `inner-end` - 要素は `<div class="item-inner">` 要素の最後に挿入されます
- `media` - 要素は `<div class="item-media">` 要素の内部に挿入されます
例
inputs.svelte
<script>
import { Navbar, Page, BlockTitle, List, ListInput, Range } from 'framework7-svelte';
</script>
<Page>
<Navbar title="Form Inputs" />
<BlockTitle>Full Layout / Stacked Labels</BlockTitle>
<List strongIos dividersIos insetIos>
<ListInput label="Name" type="text" placeholder="Your name" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="Password" type="password" placeholder="Your password" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="E-mail" type="email" placeholder="Your e-mail" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="URL" type="url" placeholder="URL" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="Phone" type="tel" placeholder="Your phone number" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="Gender" type="select" value="Male" placeholder="Please choose...">
<i class="icon demo-list-icon" slot="media" />
<option value="Male">Male</option>
<option value="Female">Female</option>
</ListInput>
<ListInput label="Birthday" type="date" value="2014-04-30" placeholder="Please choose...">
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="Date time" type="datetime-local" placeholder="Please choose...">
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="Range" input={false}>
<i class="icon demo-list-icon" slot="media" />
<span slot="input">
<Range value={50} min={0} max={100} step={1} />
</span>
</ListInput>
<ListInput label="Textarea" type="textarea" placeholder="Bio">
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="Resizable" type="textarea" resizable placeholder="Bio">
<i class="icon demo-list-icon" slot="media" />
</ListInput>
</List>
<BlockTitle>Floating Labels</BlockTitle>
<List strongIos dividersIos insetIos>
<ListInput label="Name" floatingLabel type="text" placeholder="Your name" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput
label="Password"
floatingLabel
type="password"
placeholder="Your password"
clearButton
>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="E-mail" floatingLabel type="email" placeholder="Your e-mail" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="URL" floatingLabel type="url" placeholder="URL" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="Phone" floatingLabel type="tel" placeholder="Your phone number" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput label="Resizable" floatingLabel type="textarea" resizable placeholder="Bio">
<i class="icon demo-list-icon" slot="media" />
</ListInput>
</List>
<BlockTitle>Floating Labels + Outline Inputs</BlockTitle>
<List strongIos dividersIos insetIos>
<ListInput outline label="Name" floatingLabel type="text" placeholder="Your name" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput
outline
label="Password"
floatingLabel
type="password"
placeholder="Your password"
clearButton
>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput
outline
label="E-mail"
floatingLabel
type="email"
placeholder="Your e-mail"
clearButton
>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput outline label="URL" floatingLabel type="url" placeholder="URL" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput
outline
label="Phone"
floatingLabel
type="tel"
placeholder="Your phone number"
clearButton
>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput
outline
label="Bio"
floatingLabel
type="textarea"
resizable
placeholder="Bio"
clearButton
>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
</List>
<BlockTitle>Validation + Additional Info</BlockTitle>
<List strongIos dividersIos insetIos>
<ListInput
label="Name"
type="text"
placeholder="Your name"
info="Default validation"
required
validate
clearButton
>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput
label="Fruit"
type="text"
placeholder="Type 'apple' or 'banana'"
required
validate
pattern="apple|banana"
clearButton
>
<i class="icon demo-list-icon" slot="media" />
<span slot="info">Pattern validation (<b>apple|banana</b>)</span>
</ListInput>
<ListInput
label="E-mail"
type="email"
placeholder="Your e-mail"
info="Default e-mail validation"
required
validate
clearButton
>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput
label="URL"
type="url"
placeholder="Your URL"
info="Default URL validation"
required
validate
clearButton
>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput
label="Number"
type="text"
placeholder="Enter number"
info="With custom error message"
errorMessage="Only numbers please!"
required
validate
pattern="[0-9]*"
clearButton
>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
</List>
<BlockTitle>Icon + Input</BlockTitle>
<List strongIos dividersIos insetIos>
<ListInput type="text" placeholder="Your name" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput type="password" placeholder="Your password" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput type="email" placeholder="Your e-mail" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
<ListInput type="url" placeholder="URL" clearButton>
<i class="icon demo-list-icon" slot="media" />
</ListInput>
</List>
<BlockTitle>Label + Input</BlockTitle>
<List strongIos dividersIos insetIos>
<ListInput label="Name" type="text" placeholder="Your name" clearButton />
<ListInput label="Password" type="password" placeholder="Your password" clearButton />
<ListInput label="E-mail" type="email" placeholder="Your e-mail" clearButton />
<ListInput label="URL" type="url" placeholder="URL" clearButton />
</List>
<BlockTitle>Only Inputs</BlockTitle>
<List strongIos dividersIos insetIos>
<ListInput type="text" placeholder="Your name" clearButton />
<ListInput type="password" placeholder="Your password" clearButton />
<ListInput type="email" placeholder="Your e-mail" clearButton />
<ListInput type="url" placeholder="URL" clearButton />
</List>
<BlockTitle>Inputs + Additional Info</BlockTitle>
<List strongIos dividersIos insetIos>
<ListInput type="text" placeholder="Your name" info="Full name please" clearButton />
<ListInput
type="password"
placeholder="Your password"
info="8 characters minimum"
clearButton
/>
<ListInput type="email" placeholder="Your e-mail" info="Your work e-mail address" clearButton />
<ListInput type="url" placeholder="URL" info="Your website URL" clearButton />
</List>
</Page>