Input / Form Elements Vue Components
Form elements allow you to create flexible and beautiful Form layout. Form elements are just well known List View ( and List Item Vue components) but with few additional components.
Check out Framework7’s for their appearance.
There are following components included:
- - list item input element
**f7-input**
- input element
Input Properties
Event | Arguments | Description |
---|---|---|
<f7-list-input>, <f7-input> events | ||
focus | (event) | Fired when user focused to input. |
blur | (event) | Fired when user lost focus from input. |
input | (event) | Fired immediately when input value changed. Note: Input event triggers after beforeinput, keypress, keyup, keydown events. |
change | (event) | Fired on blur if value changed. |
input:clear | (event) | Fired when input clear button clicked |
textarea:resize | (event) | Fired if resizable textarea resized. event.detail will contain object with the initialHeight , currentHeight and scrollHeight properties |
input:empty | (event) | Fired when input value becomes empty |
input:notempty | (event) | Fired when input value becomes not empty |
calendar:change | (value) | Fired when type=”datepicker” Calendar value changed. As an argument it receives array with selected dates. |
colorpicker:change | (value) | Fired when type=”colorpicker” Color Picker value changed. As an argument it receives object with Color Picker value. |
Input Slots
<f7-list-input>
has additional slots for custom elements:
**default**
- in case oftype="select"
ortype="textarea"
- element will be placed inside ofselect
ortextarea
tags.**info**
- element will be inserted into container with info message**error-message**
- element will be inserted into container with error message**label**
- element will be inserted into container with input’s label**input**
- element will be inserted instead of input element (input
prop must be also set tofalse
)**root-start**
- element will be inserted in the beginning of<li>
element**root**
/**root-end**
- element will be inserted in the end of<li>
element**content-start**
- element will be inserted in the beginning of<div class="item-content">
element**content**
/**content-end**
- element will be inserted in the end of<div class="item-content">
element**inner-start**
- element will be inserted in the beginning of<div class="item-inner">
element**inner**
/**inner-end**
- element will be inserted in the end of<div class="item-inner">
element**media**
- element will be inserted inside of<div class="item-media">
element
v-model
is not supported on f7-list-input
/ f7-input
vue components. Instead, just use the combination of value
property and @input
event:
Examples
Full Layout / Inline Labels
<f7-list inline-labels no-hairlines-md>
<f7-list-input
label="Name"
type="text"
placeholder="Your name"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Password"
type="password"
placeholder="Your password"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="E-mail"
type="email"
placeholder="Your e-mail"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="URL"
type="url"
placeholder="URL"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Phone"
type="tel"
placeholder="Your phone number"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Gender"
type="select"
defaultValue="Male"
placeholder="Please choose..."
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
<option value="Male">Male</option>
<option value="Female">Female</option>
</f7-list-input>
<f7-list-input
label="Birthday"
type="date"
defaultValue="2014-04-30"
placeholder="Please choose..."
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Date time"
type="datetime-local"
placeholder="Please choose..."
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Range"
:input="false"
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
<f7-range slot="input" :value="50" :min="0" :max="100" :step="1"></f7-range>
</f7-list-input>
<f7-list-input
label="Textarea"
type="textarea"
placeholder="Bio"
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Resizable"
type="textarea"
resizable
placeholder="Bio"
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
</f7-list>
Full Layout / Stacked Labels
<f7-list no-hairlines-md>
<f7-list-input
label="Name"
type="text"
placeholder="Your name"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Password"
type="password"
placeholder="Your password"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="E-mail"
type="email"
placeholder="Your e-mail"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
type="url"
placeholder="URL"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
type="tel"
placeholder="Your phone number"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Gender"
type="select"
defaultValue="Male"
placeholder="Please choose..."
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
<option value="Male">Male</option>
<option value="Female">Female</option>
</f7-list-input>
<f7-list-input
label="Birthday"
type="date"
defaultValue="2014-04-30"
placeholder="Please choose..."
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Date time"
type="datetime-local"
placeholder="Please choose..."
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Range"
:input="false"
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
<f7-range slot="input" :value="50" :min="0" :max="100" :step="1"></f7-range>
</f7-list-input>
<f7-list-input
label="Textarea"
type="textarea"
placeholder="Bio"
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Resizable"
type="textarea"
resizable
placeholder="Bio"
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
</f7-list>
Date Pickers
<f7-list no-hairlines-md>
<f7-list-input
label="Default setup"
type="datepicker"
placeholder="Your birth date"
readonly
></f7-list-input>
<f7-list-input
label="Custom date format"
type="datepicker"
placeholder="Select date"
readonly
:calendar-params="{dateFormat: 'DD, MM dd, yyyy'}"
></f7-list-input>
<f7-list-input
label="Multiple Values"
type="datepicker"
placeholder="Select multiple dates"
readonly
:calendar-params="{ dateFormat: 'M dd yyyy', multiple: true }"
></f7-list-input>
<f7-list-input
label="Range Picker"
type="datepicker"
placeholder="Select date range"
readonly
:calendar-params="{ dateFormat: 'M dd yyyy', rangePicker: true }"
></f7-list-input>
<f7-list-input
label="Open in Modal"
type="datepicker"
placeholder="Select date"
readonly
:calendar-params="{openIn: 'customModal', header: true, footer: true, dateFormat: 'MM dd yyyy'}"
></f7-list-input>
</f7-list>
Color Pickers
Floating Labels
<f7-list no-hairlines-md>
<f7-list-input
label="Name"
floating-label
type="text"
placeholder="Your name"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Password"
floating-label
type="password"
placeholder="Your password"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="E-mail"
floating-label
type="email"
placeholder="Your e-mail"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="URL"
floating-label
type="url"
placeholder="URL"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Phone"
floating-label
type="tel"
placeholder="Your phone number"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Resizable"
floating-label
type="textarea"
resizable
placeholder="Bio"
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
</f7-list>
Floating Labels + Outline Inputs
<f7-list no-hairlines-md>
<f7-list-input
outline
label="Name"
floating-label
type="text"
placeholder="Your name"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
outline
label="Password"
floating-label
type="password"
placeholder="Your password"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
outline
label="E-mail"
floating-label
type="email"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
outline
label="URL"
floating-label
type="url"
placeholder="URL"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
outline
label="Phone"
floating-label
type="tel"
placeholder="Your phone number"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
outline
label="Bio"
floating-label
type="textarea"
resizable
placeholder="Bio"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
</f7-list>
Validation + Additional Info
<f7-list no-hairlines-md>
<f7-list-input
label="Name"
type="text"
placeholder="Your name"
info="Default validation"
required
validate
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Fruit"
type="text"
placeholder="Type 'apple' or 'banana'"
required
validate
pattern="apple|banana"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
<span slot="info">Pattern validation (<b>apple|banana</b>)</span>
</f7-list-input>
<f7-list-input
label="E-mail"
type="email"
placeholder="Your e-mail"
info="Default e-mail validation"
required
validate
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="URL"
type="url"
placeholder="Your URL"
info="Default URL validation"
required
validate
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
<f7-list-input
label="Number"
type="text"
placeholder="Enter number"
info="With custom error message"
error-message="Only numbers please!"
required
validate
pattern="[0-9]*"
clear-button
>
<f7-icon icon="demo-list-icon" slot="media"></f7-icon>
</f7-list-input>
</f7-list>
Icon + Input
Label + Input
<f7-list no-hairlines-md>
<f7-list-input
label="Name"
type="text"
placeholder="Your name"
clear-button
></f7-list-input>
<f7-list-input
label="Password"
type="password"
placeholder="Your password"
clear-button
></f7-list-input>
<f7-list-input
label="E-mail"
type="email"
placeholder="Your e-mail"
clear-button
></f7-list-input>
<f7-list-input
label="URL"
type="url"
placeholder="URL"
clear-button
></f7-list-input>
</f7-list>
Only Inputs
<f7-list no-hairlines-md>
<f7-list-input
type="text"
placeholder="Your name"
clear-button
></f7-list-input>
<f7-list-input
type="password"
placeholder="Your password"
clear-button
></f7-list-input>
<f7-list-input
type="email"
placeholder="Your e-mail"
clear-button
></f7-list-input>
<f7-list-input
type="url"
placeholder="URL"
clear-button
></f7-list-input>
</f7-list>
Inputs + Additional Info
<f7-list no-hairlines-md>
<f7-list-input
type="text"
placeholder="Your name"
info="Full name please"
clear-button
></f7-list-input>
<f7-list-input
type="password"
placeholder="Your password"
info="8 characters minimum"
clear-button
></f7-list-input>
<f7-list-input
type="email"
placeholder="Your e-mail"
info="Your work e-mail address"
clear-button
></f7-list-input>
<f7-list-input
type="url"
placeholder="URL"
info="Your website URL"
clear-button
></f7-list-input>