入力 / フォーム入力
フォーム入力を使用すると、柔軟で美しいフォームレイアウトを作成することができます。
入力物のレイアウト
入力はリストビューで使用することをお勧めします。
<div class="list">
<ul>
...
<li class="item-content item-input">
<div class="item-media">... icon/image here ...</div>
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" name="name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
...
</ul>
</div>
構造
item-input
-item-content
の必須の追加クラスです。入力アイテムを正しくレイアウトするために必要です。item-label
-item-title
に追加されるクラスで、ラベルを正しく表示するために必要です。item-input-wrap
- 必須の追加入力ラッパーです。item-inner` の直接の子でなければなりません。<span class="input-clear-button">
- クリックすると入力値をクリアするボタンです。Optional
スタックラベル
デフォルトでは、入力リストは積み重ねられたラベルで表示されます。積み重ねられたラベルは常に入力の上に表示されます。
<div class="list">
<ul>
...
<li class="item-content item-input">
<div class="item-media">... icon/image here ...</div>
<div class="item-inner">
<div class="item-title item-label">Name</div>
<div class="item-input-wrap">
<input type="text" name="name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
...
</ul>
</div>
構造
item-title item-label
- 入力ラベル
インラインラベル
インラインラベルを使用したい場合は、リスト全体に inline-labels
クラスを追加するか、単一のアイテムに inline-label
クラスを追加します。
<div class="list inline-labels">
<ul>
...
<li class="item-content item-input">
<div class="item-media">... icon/image here ...</div>
<div class="item-inner">
<div class="item-title item-label">Name</div>
<div class="item-input-wrap">
<input type="text" name="name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
...
</ul>
</div>
<!-- または、単一のアイテムに -->
<div class="list">
<ul>
...
<!-- インラインラベル」クラスの追加 -->
<li class="item-content item-input inline-label">
...
</li>
...
</ul>
</div>
フローティングラベル
フローティングラベルを追加するには、item-labelではなく、item-floating-label
クラスを使う必要があります。
<div class="list">
<ul>
...
<li class="item-content item-input">
<div class="item-media">... icon/image here ...</div>
<div class="item-inner">
<!-- "item-floating-label" class on item title -->
<div class="item-title item-floating-label">Name</div>
<div class="item-input-wrap">
<input type="text" name="name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
...
</ul>
</div>
アウトライン入力
入力をアウトライン化するには、メインのリスト入力要素に item-input-outline
クラスを追加する必要があります。
<div class="list">
<ul>
...
<!-- 追加の "item-input-outline" クラス -->
<li class="item-content item-input item-input-outline">
<div class="item-inner">
<div class="item-title item-label">Name</div>
<div class="item-input-wrap">
<input type="text" name="name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
...
</ul>
</div>
アイテム情報
また、フォームの入力に関する情報を追加することもできます。
<div class="list">
<ul>
...
<!-- itemに "item-input-with-info "クラスを追加します。 -->
<li class="item-content item-input item-input-with-info">
<div class="item-media">... icon/image here ...</div>
<div class="item-inner">
<div class="item-title item-label">Name</div>
<div class="item-input-wrap">
<input type="text" name="name" />
<span class="input-clear-button"></span>
<!-- 要素に追加情報を表示します。 -->
<div class="item-input-info">Some information about input field</div>
</div>
</div>
</li>
...
</ul>
</div>
構造
item-input-with-info
- 入力項目に必須の追加クラスです。<div class="item-input-info">...</div>
- 付加情報を持つ要素
ドロップダウン入力
追加の input-dropdown-wrap
クラスを使って、(select のような)ドロップダウン入力を示すことも可能です。右側に小さなドロップダウンアイコン(▼)が追加されます。
<div class="list">
<ul>
...
<li class="item-content item-input">
<div class="item-media">... icon/image here ...</div>
<div class="item-inner">
<div class="item-title item-label">Name</div>
<!-- 追加の「input-dropdown-wrap」クラス -->
<div class="item-input-wrap input-dropdown-wrap">
<select>
...
</select>
</div>
</div>
</li>
...
</ul>
</div>
対応する入力要素
以下は、item-input-wrap
の中に入れることができる入力要素の一覧です。
すべてのテキスト入力 | Supported types: text , password , email , tel , url , date , number , datetime-local
|
選択 |
|
テキストエリア |
|
レンジスライダー |
|
サイズ変更可能なテキストエリア
テキストエリアのサイズをコンテンツに応じて自動的に変更するには、resizable
クラスを追加します。
<textarea class="resizable"></textarea>
バリデーション
Framework7では、HTML5のバリデーションを、validity
入力プロパティに基づいてサポートしています。バリデーションを有効にすると、入力値が無効な場合にバリデーションのエラーメッセージが表示されるようになります。
バリデーションを有効にするには、input 要素に required
と validate
属性を追加する必要があります。
もしも blur
イベントの際に only 入力の検証が必要であれば、data-validate-on-blur="true"
属性を追加する必要があります。
値の検証は入力の type
に依存します。例えば、input type="email"
は email パターンにマッチするかどうか検証されます。これはブラウザのデフォルトの動作です。入力値を検証するためにカスタムルールを追加したい場合には、pattern
入力属性を使って行う必要があります。
<!-- デフォルトのバリデーションでは、値が空でないことをチェックします。 -->
<input type="text" placeholder="Your name" required validate />
<!-- デフォルトのEメールバリデーション、値がEメールであることをチェックする -->
<input type="email" placeholder="Your e-mail" required validate />
<!-- デフォルトのURL検証 -->
<input type="url" placeholder="Your URL" required validate />
<!-- パターン検証、値は "apple "または "banana "でなければなりません。 -->
<input type="text" required validate pattern="apple|banana" placeholder="Type 'apple' or 'banana'" />
<!-- パターン検証(カスタムエラーメッセージ付き)、値は数字のみであること -->
<input type="text" placeholder="Enter number" required validate pattern="[0-9]*" data-error-message="Only numbers please!" />
<!-- この入力はblurの時のみ検証されます。 -->
<input type="text" placeholder="Your name" required validate data-validate-on-blur="true" />
入力状態クラス
input要素には、その状態や内容に応じて、いくつかのクラスを追加することができます。
input-with-value
- 値があるときに入力に追加されます。input-focused
- フォーカスされたときに入力に追加されます。input-invalid
- 値が有効でないときに追加されます。
同じ状態がinputの親である item-input
要素にも追加されます。
item-input-with-value
- 入力が値を持つときに、入力アイテムに追加されます。item-input-focused
- 入力がフォーカスされたときに、入力アイテムに追加されます。item-input-invalid
- 入力された値が有効でないときに、入力項目に追加されます。
入力アプリのパラメータ
グローバルアプリパラメータを使って、デフォルトの入力動作を制御することができます。このアプリパラメータでは、入力関連のパラメータを input
プロパティに渡すことができます。
Parameter | Type | Default | Description |
---|---|---|---|
scrollIntoViewOnFocus | boolean | これを有効にすると、入力フォーカス時に入力をスクロールして表示します。デフォルトでは、アンドロイド端末でのみ有効になっています。これは、オンスクリーンキーボードが入力に重なる場合の問題を解決するのに役立ちます。 | |
scrollIntoViewCentered | boolean | false | 入力フォーカス時に入力を視界の中心にスクロールする前のパラメータの動作を調整しました。 |
scrollIntoViewDuration | number | 0 | 入力を画面内にスクロールする際のデフォルトの時間 |
scrollIntoViewAlways | boolean | false | 有効にすると、入力が画面の外にあってもなくても、画面内にスクロールします。 |
例:
var app = new Framework7({
input: {
scrollIntoViewOnFocus: true,
scrollIntoViewCentered: true,
}
});
入力アプリのメソッド
入力を制御するために、以下のアプリのメソッドが利用できます。
app.input.scrollIntoView(inputEl, duration, centered, force) | 入力をスクロールして表示する
|
app.input.focus(inputEl) | 入力がフォーカスされたときのように、必要なスタイルやクラスが追加されます。
|
app.input.blur(inputEl) | 入力要素がフォーカスを失ったときなどに、追加の必須スタイルやクラスを削除します。
|
app.input.resizeTextarea(textareaEl) | サイズ変更可能なtextareaを内容に応じて強制的にサイズ変更する
|
app.input.checkEmptyState(inputEl) | 入力要素が値を持つかどうかに基づいて、必要な追加スタイルとクラスを再計算する
|
app.input.validate(inputEl) | 入力を検証する
|
app.input.validateInputs(containerEl) | 渡されたコンテナ内のすべての入力を検証します。
|
入力のイベント
入力では、以下のDOMイベントが発生します。 input要素。
Event | Target | Description |
---|---|---|
textarea:resize | Textarea Element<textarea class="resizable"> | イベントは、サイズ変更可能なtextareaのサイズが変更された後に発生します。event.detailには、 initialHeight、 currentHeight、 scrollHeight`のプロパティを持つオブジェクトが含まれます。 |
input:notempty | Input Element<input/textarea> | 入力値が空でなくなるとイベントが発生します。 |
input:empty | Input Element<input/textarea> | 入力値が空になったときにイベントが発生します。 |
input:clear | Input Element<input/textarea> | 入力クリアボタンをクリックして、入力値がクリアされると、イベントが発生します。 |
CSS Variables
Below is the list of related CSS variables (CSS custom properties).
Note that commented variables are not specified by default and their values is what they fallback to in this case.
:root {
--f7-input-bg-color: transparent;
--f7-label-font-weight: 400;
--f7-label-line-height: 1.3;
--f7-input-padding-left: 0px;
--f7-input-padding-right: 0px;
--f7-input-error-text-color: #ff3b30;
--f7-input-error-font-size: 12px;
--f7-input-error-line-height: 1.4;
--f7-input-error-font-weight: 400;
--f7-input-info-font-size: 12px;
--f7-input-info-line-height: 1.4;
--f7-input-outline-height: 40px;
--f7-input-outline-border-radius: 4px;
--f7-input-outline-padding-horizontal: 12px;
--f7-textarea-height: 100px;
/*
--f7-input-outline-focused-border-color: var(--f7-theme-color);
--f7-input-outline-invalid-border-color: var(--f7-input-error-text-color);
*/
--f7-input-outline-border-color: #bbb;
}
:root .theme-dark,
:root.theme-dark {
--f7-input-outline-border-color: #444;
}
.ios {
--f7-input-height: 44px;
--f7-input-font-size: 17px;
--f7-input-placeholder-color: #a9a9a9;
--f7-textarea-padding-vertical: 11px;
/*
--f7-input-focused-border-color: var(--f7-list-item-border-color);
--f7-input-invalid-border-color: var(--f7-list-item-border-color);
--f7-input-invalid-text-color: var(--f7-input-error-text-color);
*/
--f7-label-font-size: 12px;
--f7-label-text-color: inherit;
/*
--f7-label-focused-text-color: var(--f7-label-text-color);
--f7-label-invalid-text-color: var(--f7-label-text-color);
*/
--f7-floating-label-scale: calc(17 / 12);
--f7-inline-label-font-size: 17px;
--f7-inline-label-line-height: 1.4;
--f7-inline-label-padding-top: 3px;
--f7-input-clear-button-size: 14px;
--f7-input-text-color: #000000;
--f7-input-info-text-color: rgba(0, 0, 0, 0.45);
--f7-input-clear-button-color: rgba(0, 0, 0, 0.45);
}
.ios .theme-dark,
.ios.theme-dark {
--f7-input-text-color: #fff;
--f7-input-info-text-color: rgba(255, 255, 255, 0.55);
--f7-input-clear-button-color: rgba(255, 255, 255, 0.5);
}
.md {
--f7-input-height: 36px;
--f7-input-font-size: 16px;
--f7-textarea-padding-vertical: 7px;
/*
--f7-input-focused-border-color: var(--f7-theme-color);
--f7-input-invalid-border-color: var(--f7-input-error-text-color);
--f7-input-invalid-text-color: var(--f7-input-text-color);
*/
--f7-label-font-size: 12px;
/*
--f7-label-focused-text-color: var(--f7-theme-color);
--f7-label-invalid-text-color: var(--f7-input-error-text-color );
*/
--f7-floating-label-scale: calc(16 / 12);
--f7-inline-label-font-size: 16px;
--f7-inline-label-line-height: 1.5;
--f7-inline-label-padding-top: 7px;
--f7-input-clear-button-size: 18px;
--f7-input-clear-button-color: #aaa;
--f7-input-text-color: #212121;
--f7-input-placeholder-color: rgba(0, 0, 0, 0.35);
--f7-label-text-color: rgba(0, 0, 0, 0.65);
--f7-input-info-text-color: rgba(0, 0, 0, 0.45);
}
.md .theme-dark,
.md.theme-dark {
--f7-input-text-color: rgba(255, 255, 255, 0.87);
--f7-input-placeholder-color: rgba(255, 255, 255, 0.35);
--f7-label-text-color: rgba(255, 255, 255, 0.54);
--f7-input-info-text-color: rgba(255, 255, 255, 0.45);
}
.aurora {
--f7-input-height: 32px;
--f7-input-font-size: 16px;
--f7-textarea-padding-vertical: 4px;
/*
--f7-input-focused-border-color: var(--f7-theme-color);
--f7-input-invalid-border-color: var(--f7-input-error-text-color);
--f7-input-invalid-text-color: var(--f7-input-text-color);
*/
--f7-label-font-size: 12px;
--f7-label-text-color: inherit;
/*
--f7-label-focused-text-color: var(--f7-theme-color);
--f7-label-invalid-text-color: var(--f7-input-error-text-color );
*/
--f7-floating-label-scale: calc(16 / 12);
--f7-inline-label-font-size: 16px;
--f7-inline-label-line-height: 1.5;
--f7-inline-label-padding-top: 4px;
--f7-input-clear-button-size: 14px;
--f7-input-outline-border-radius: 8px;
--f7-input-text-color: #000000;
--f7-input-placeholder-color: rgba(0, 0, 0, 0.32);
--f7-input-clear-button-color: rgba(0, 0, 0, 0.45);
--f7-input-info-text-color: rgba(0, 0, 0, 0.5);
}
.aurora .theme-dark,
.aurora.theme-dark {
--f7-input-text-color: #fff;
--f7-input-clear-button-color: rgba(255, 255, 255, 0.5);
--f7-input-placeholder-color: rgba(255, 255, 255, 0.35);
--f7-input-info-text-color: rgba(255, 255, 255, 0.45);
}
Examples
<template>
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="title">Form Inputs</div>
</div>
</div>
<div class="page-content">
<div class="block-title">Full Layout / Inline Labels</div>
<div class="list inline-labels no-hairlines-md">
<ul>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Name</div>
<div class="item-input-wrap">
<input type="text" placeholder="Your name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Password</div>
<div class="item-input-wrap">
<input type="password" placeholder="Your password" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">E-mail</div>
<div class="item-input-wrap">
<input type="email" placeholder="Your e-mail" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">URL</div>
<div class="item-input-wrap">
<input type="url" placeholder="URL" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Phone</div>
<div class="item-input-wrap">
<input type="tel" placeholder="Your phone number" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Gender</div>
<div class="item-input-wrap input-dropdown-wrap">
<select placeholder="Please choose...">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Birthday</div>
<div class="item-input-wrap">
<input type="date" value="2014-04-30" placeholder="Please choose..." />
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Date time</div>
<div class="item-input-wrap">
<input type="datetime-local" placeholder="Please choose..." />
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Range</div>
<div class="item-input-wrap">
<div class="range-slider range-slider-init" data-label="true">
<input type="range" value="50" min="0" max="100" step="1" />
</div>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Textarea</div>
<div class="item-input-wrap">
<textarea placeholder="Bio"></textarea>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Resizable</div>
<div class="item-input-wrap">
<textarea class="resizable" placeholder="Bio"></textarea>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Full Layout / Stacked Labels</div>
<div class="list no-hairlines-md">
<ul>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Name</div>
<div class="item-input-wrap">
<input type="text" placeholder="Your name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Password</div>
<div class="item-input-wrap">
<input type="password" placeholder="Your password" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">E-mail</div>
<div class="item-input-wrap">
<input type="email" placeholder="Your e-mail" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">URL</div>
<div class="item-input-wrap">
<input type="url" placeholder="URL" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Phone</div>
<div class="item-input-wrap">
<input type="tel" placeholder="Your phone number" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Gender</div>
<div class="item-input-wrap input-dropdown-wrap">
<select placeholder="Please choose...">
<option value="Male">Male</option>
<option value="Female">Female</option>
</select>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Birthday</div>
<div class="item-input-wrap">
<input type="date" value="2014-04-30" placeholder="Please choose..." />
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Date time</div>
<div class="item-input-wrap">
<input type="datetime-local" placeholder="Please choose..." />
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Range</div>
<div class="item-input-wrap">
<div class="range-slider range-slider-init" data-label="true">
<input type="range" value="50" min="0" max="100" step="1" />
</div>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Textarea</div>
<div class="item-input-wrap">
<textarea placeholder="Bio"></textarea>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Resizable</div>
<div class="item-input-wrap">
<textarea class="resizable" placeholder="Bio"></textarea>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Floating Labels</div>
<div class="list no-hairlines-md">
<ul>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">Name</div>
<div class="item-input-wrap">
<input type="text" placeholder="Your name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">Password</div>
<div class="item-input-wrap">
<input type="password" placeholder="Your password" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">E-mail</div>
<div class="item-input-wrap">
<input type="email" placeholder="Your e-mail" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">URL</div>
<div class="item-input-wrap">
<input type="url" placeholder="URL" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">Phone</div>
<div class="item-input-wrap">
<input type="tel" placeholder="Your phone number" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">Bio</div>
<div class="item-input-wrap">
<textarea class="resizable" placeholder="Bio"></textarea>
<span class="input-clear-button"></span>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Floating Labels + Outline Inputs</div>
<div class="list no-hairlines-md">
<ul>
<li class="item-content item-input item-input-outline">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">Name</div>
<div class="item-input-wrap">
<input type="text" placeholder="Your name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input item-input-outline">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">Password</div>
<div class="item-input-wrap">
<input type="password" placeholder="Your password" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input item-input-outline">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">E-mail</div>
<div class="item-input-wrap">
<input type="email" placeholder="Your e-mail" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input item-input-outline">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">URL</div>
<div class="item-input-wrap">
<input type="url" placeholder="URL" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input item-input-outline">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">Phone</div>
<div class="item-input-wrap">
<input type="tel" placeholder="Your phone number" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input item-input-outline">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-floating-label">Bio</div>
<div class="item-input-wrap">
<textarea class="resizable" placeholder="Bio"></textarea>
<span class="input-clear-button"></span>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Validation + Additional Info</div>
<div class="list no-hairlines-md">
<ul>
<li class="item-content item-input item-input-with-info">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Name</div>
<div class="item-input-wrap">
<input type="text" placeholder="Your name" required validate />
<span class="input-clear-button"></span>
<div class="item-input-info">Default "required" validation</div>
</div>
</div>
</li>
<li class="item-content item-input item-input-with-info">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Fruit</div>
<div class="item-input-wrap">
<input type="text" placeholder="Type 'apple' or 'banana'" required validate
pattern="apple|banana" />
<span class="input-clear-button"></span>
<div class="item-input-info">Pattern validation (<b>apple|banana</b>)</div>
</div>
</div>
</li>
<li class="item-content item-input item-input-with-info">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">E-mail</div>
<div class="item-input-wrap">
<input type="email" placeholder="Your e-mail" required validate />
<span class="input-clear-button"></span>
<div class="item-input-info">Default e-mail validation</div>
</div>
</div>
</li>
<li class="item-content item-input item-input-with-info">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">URL</div>
<div class="item-input-wrap">
<input type="url" placeholder="Your URL" required validate />
<span class="input-clear-button"></span>
<div class="item-input-info">Default URL validation</div>
</div>
</div>
</li>
<li class="item-content item-input item-input-with-info">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-title item-label">Number</div>
<div class="item-input-wrap">
<input type="text" placeholder="Enter number" required validate pattern="[0-9]*"
data-error-message="Only numbers please!" />
<span class="input-clear-button"></span>
<div class="item-input-info">With custom error message</div>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Icon + Input</div>
<div class="list no-hairlines-md">
<ul>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" placeholder="Your name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-input-wrap">
<input type="password" placeholder="Your password" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-input-wrap">
<input type="email" placeholder="Your e-mail" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-media">
<i class="icon demo-list-icon"></i>
</div>
<div class="item-inner">
<div class="item-input-wrap">
<input type="url" placeholder="URL" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Label + Input</div>
<div class="list no-hairlines-md">
<ul>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">Name</div>
<div class="item-input-wrap">
<input type="text" placeholder="Your name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">Password</div>
<div class="item-input-wrap">
<input type="password" placeholder="Your password" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">E-mail</div>
<div class="item-input-wrap">
<input type="email" placeholder="Your e-mail" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">URL</div>
<div class="item-input-wrap">
<input type="url" placeholder="URL" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Only Inputs</div>
<div class="list no-hairlines-md">
<ul>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" placeholder="Your name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="password" placeholder="Your password" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="email" placeholder="Your e-mail" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="url" placeholder="URL" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Inputs + Additional Info</div>
<div class="list no-hairlines-md">
<ul>
<li class="item-content item-input item-input-with-info">
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" placeholder="Your name" />
<span class="input-clear-button"></span>
<div class="item-input-info">Full name please</div>
</div>
</div>
</li>
<li class="item-content item-input item-input-with-info">
<div class="item-inner">
<div class="item-input-wrap">
<input type="password" placeholder="Your password" />
<span class="input-clear-button"></span>
<div class="item-input-info">8 characters minimum</div>
</div>
</div>
</li>
<li class="item-content item-input item-input-with-info">
<div class="item-inner">
<div class="item-input-wrap">
<input type="email" placeholder="Your e-mail" />
<span class="input-clear-button"></span>
<div class="item-input-info">Your work e-mail address</div>
</div>
</div>
</li>
<li class="item-content item-input item-input-with-info">
<div class="item-inner">
<div class="item-input-wrap">
<input type="url" placeholder="URL" />
<span class="input-clear-button"></span>
<div class="item-input-info">Your website URL</div>
</div>
</div>
</li>
</ul>
</div>
<div class="block-title">Only Inputs Inset</div>
<div class="list inset">
<ul>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="text" placeholder="Your name" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="password" placeholder="Your password" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="email" placeholder="Your e-mail" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
<li class="item-content item-input">
<div class="item-inner">
<div class="item-input-wrap">
<input type="url" placeholder="URL" />
<span class="input-clear-button"></span>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</template>
<style>
.demo-list-icon,
.icon-f7 {
background: #ccc;
display: block;
position: relative;
}
.ios .demo-list-icon {
width: 29px;
height: 29px;
border-radius: 6px;
box-sizing: border-box;
}
.md .demo-list-icon {
width: 24px;
height: 24px;
border-radius: 4px;
}
.aurora .demo-list-icon {
width: 18px;
height: 18px;
border-radius: 4px;
}
</style>