List Vue Component
List views are versatile and powerful user interface components frequently found in apps. A list view presents data in a scrollable list of multiple rows that may be divided into sections/groups.
List views have many purposes:
- To let users navigate through hierarchically structured data
- To present an indexed list of items
- To display detail information and controls in visually distinct groupings
- To present a selectable list of options
List Vue component represents Framework7's List View component.
List Components
There are following components included:
f7-list
- main List View elementf7-list-group
- list group element
List Properties
Prop | Type | Default | Description |
---|---|---|---|
<f7-list> properties | |||
inset | boolean | Makes list inset. inset-ios and inset-md props available for theme specific layout | |
xsmall-inset | boolean | Makes list inset when app width >= 480px. xsmall-inset-ios and xsmall-inset-md props available for theme specific layout | |
small-inset | boolean | Makes list inset when app width >= 568px. small-inset-ios and small-inset-md props available for theme specific layout | |
medium-inset | boolean | Makes list inset when app width >= 768px. medium-inset-ios and medium-inset-md props available for theme specific layout | |
large-inset | boolean | Makes list inset when app width >= 1024px. large-inset-ios and large-inset-md props available for theme specific layout | |
xlarge-inset | boolean | Makes list inset when app width >= 1200px. xlarge-inset-ios and xlarge-inset-md props available for theme specific layout | |
strong | boolean | Adds extra highlighting to the list. strong-ios and strong-md props available for theme specific layout | |
outline | boolean | Makes list outline (with border). outline-ios and outline-md props available for theme specific layout | |
dividers | boolean | Adds dividers (borders) between list items. dividers-ios and dividers-md props available for theme specific layout | |
media-list | boolean | false | Enables Media List |
links-list | boolean | false | Enables simplified Links List |
simple-list | boolean | false | Enables simplified Simple List |
sortable | boolean | false | Enables Sortable List |
sortable-opposite | boolean | false | Renders sortable handler on opposite side (on left in LTR) |
sortable-tap-hold | boolean | false | Makes list items sortable on item tap and hold (long press). In this case app will rely on custom taphold event. To make it work correctly, make sure you have also enabled touch.tapHold: true app parameter |
sortable-enabled | boolean | false | Enables sorting on sortable list |
sortable-move-elements | boolean | When passed it will overwrite same sortable.moveElements global app parameter. | |
menuList | boolean | Enables Menu List | |
accordion | boolean | false | Enables Accordion List |
accordion-opposite | boolean | false | Renders accordion chevron icon on opposite side (on left in LTR) |
contacts-list | boolean | false | Enables Contacts List by adding required additional classes for styling |
form | boolean | false | Enables <form> tag on list block instead of <div> |
form-store-data | boolean | false | Enables form storage for the current form |
no-chevron | boolean | false | Removes "chevron" icon on nested list item links |
chevron-center | boolean | false | Sets "chevron" icon on nested media list items on center (vertically) |
tab | boolean | false | Adds additional "tab" class when block should be used as a Tab |
tab-active | boolean | false | Adds additional "tab-active" class when block used as a Tab and makes it active tab |
virtual-list | boolean | false | Enables Virtual List |
virtual-list-params | object | Object with Virtual List Parameters | |
<f7-list-group> properties | |||
media-list | boolean | false | Enables Media List for this group |
sortable | boolean | false | Enables Sortable List for this group |
sortable-tap-hold | boolean | false | Makes list items sortable on item tap and hold (long press). In this case app will rely on custom taphold event. To make it work correctly, make sure you have also enabled touch.tapHold: true app parameter |
simple-list | boolean | false | Enables simplified Simple List for this group |
List Events
Event | Description |
---|---|
<f7-list> events | |
tab:show | Event will be triggered when List Block-Tab becomes visible/active |
tab:hide | Event will be triggered when List Block-Tab becomes invisible/inactive |
submit | Event will be triggered on list-form submit when list used as form (with enabled form prop) |
<f7-list> Sortable specific events | |
sortable:enable | Event will be triggered when sortable mode is enabled |
sortable:disable | Event will be triggered when sortable mode is disabled |
sortable:sort | Event will be triggered after user release currently sorting element in new position. event.detail will contain object with from and to properties with start/new index numbers of sorted list item |
<f7-list> Virtual List specific events | |
virtual:itembeforeinsert | Event will be triggered before item will be added to virtual document fragment |
virtual:itemsbeforeinsert | Event will be triggered after current DOM list will be removed and before new document will be inserted |
virtual:itemsafterinsert | Event will be triggered after new document fragment with items inserted |
virtual:beforeclear | Event will be triggered before current DOM list will be removed and replaced with new document fragment |
List Slots
List Vue component (<f7-list>
) has additional slots for custom elements:
before-list
- element will be inserted in the beginning of list view and right before<ul>
main listafter-list
- element will be inserted in the end of list view and right after<ul>
main listlist
- element will be inserted inside of<ul>
main list element
Virtual List
For Virtual List usage and examples check the Virtual List Vue Component documentation.
Sortable List
For Sortable List usage and examples check the Sortable Vue Component documentation.
Accordion List
For Accordion List usage and examples check the Accordion Vue Component documentation.
Examples
list.vue
<template>
<f7-page>
<f7-navbar title="List View" />
<f7-block>
<p>
Framework7 allows you to be flexible with list views (table views). You can make them as
navigation menus, you can use there icons, inputs, and any elements inside of the list, and
even make them nested:
</p>
</f7-block>
<f7-block-title>Simple List</f7-block-title>
<f7-list simple-list dividers-ios>
<f7-list-item title="Item 1" />
<f7-list-item title="Item 2" />
<f7-list-item title="Item 3" />
</f7-list>
<f7-block-title>Strong List</f7-block-title>
<f7-list simple-list dividers-ios strong>
<f7-list-item title="Item 1" />
<f7-list-item title="Item 2" />
<f7-list-item title="Item 3" />
</f7-list>
<f7-block-title>Strong Outline List</f7-block-title>
<f7-list simple-list dividers-ios strong outline>
<f7-list-item title="Item 1" />
<f7-list-item title="Item 2" />
<f7-list-item title="Item 3" />
</f7-list>
<f7-block-title>Strong Inset List</f7-block-title>
<f7-list simple-list dividers-ios strong inset>
<f7-list-item title="Item 1" />
<f7-list-item title="Item 2" />
<f7-list-item title="Item 3" />
</f7-list>
<f7-block-title>Strong Outline Inset List</f7-block-title>
<f7-list simple-list dividers-ios strong outline inset>
<f7-list-item title="Item 1" />
<f7-list-item title="Item 2" />
<f7-list-item title="Item 3" />
</f7-list>
<f7-block-title>Simple Links List</f7-block-title>
<f7-list dividers-ios strong-ios outline-ios>
<f7-list-item title="Link 1" link="#" />
<f7-list-item title="Link 2" link="#" />
<f7-list-item title="Link 3" link="#" />
</f7-list>
<f7-block-title>Data list, with icons</f7-block-title>
<f7-list dividers-ios strong-ios outline-ios>
<f7-list-item title="Ivan Petrov" after="CEO">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item title="John Doe" badge="5">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item title="Jenna Smith">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
</f7-list>
<f7-block-title>Links</f7-block-title>
<f7-list dividers-ios strong-ios outline-ios>
<f7-list-item link="#" title="Ivan Petrov" after="CEO">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item link="#" title="John Doe" after="Cleaner">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item link="#" title="Jenna Smith">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
</f7-list>
<f7-block-title>Links, Header, Footer</f7-block-title>
<f7-list dividers-ios strong-ios outline-ios>
<f7-list-item link="#" header="Name" title="John Doe" after="Edit">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item link="#" header="Phone" title="+7 90 111-22-3344" after="Edit">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item link="#" header="Email" title="john@doe" footer="Home" after="Edit">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item link="#" header="Email" title="john@framework7" footer="Work" after="Edit">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
</f7-list>
<f7-block-title>Links, no icons</f7-block-title>
<f7-list dividers-ios strong-ios outline-ios>
<f7-list-item link="#" title="Ivan Petrov" />
<f7-list-item link="#" title="John Doe" />
<f7-list-item group-title title="Group Title Here" />
<f7-list-item link="#" title="Ivan Petrov" />
<f7-list-item link="#" title="Jenna Smith" />
</f7-list>
<f7-block-title>Grouped with sticky titles</f7-block-title>
<f7-list dividers-ios strong-ios outline-ios>
<f7-list-group>
<f7-list-item title="A" group-title />
<f7-list-item title="Aaron " />
<f7-list-item title="Abbie" />
<f7-list-item title="Adam" />
</f7-list-group>
<f7-list-group>
<f7-list-item title="B" group-title />
<f7-list-item title="Bailey" />
<f7-list-item title="Barclay" />
<f7-list-item title="Bartolo" />
</f7-list-group>
<f7-list-group>
<f7-list-item title="C" group-title />
<f7-list-item title="Caiden" />
<f7-list-item title="Calvin" />
<f7-list-item title="Candy" />
</f7-list-group>
</f7-list>
<f7-block-title>Mixed and nested</f7-block-title>
<f7-list dividers-ios strong-ios outline-ios>
<f7-list-item link="#" title="Ivan Petrov" after="CEO">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item link="#" title="Two icons here">
<template #media>
<f7-icon icon="icon-f7" />
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item title="No icons here" />
<li>
<ul>
<f7-list-item link="#" title="Ivan Petrov" after="CEO">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item link="#" title="Two icons here">
<template #media>
<f7-icon icon="icon-f7" />
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item title="No icons here" />
<f7-list-item link="#" title="Ultra long text goes here, no, it is really really long">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item title="With toggle">
<template #media>
<f7-icon icon="icon-f7" />
</template>
<template #after>
<f7-toggle />
</template>
</f7-list-item>
</ul>
</li>
<f7-list-item link="#" title="Ultra long text goes here, no, it is really really long">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item title="With toggle">
<template #media>
<f7-icon icon="icon-f7" />
</template>
<template #after>
<f7-toggle />
</template>
</f7-list-item>
</f7-list>
<f7-block-title>Tablet inset</f7-block-title>
<f7-list dividers-ios strong-ios outline-ios medium-inset>
<f7-list-item link="#" title="Ivan Petrov" after="CEO">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item link="#" title="Two icons here">
<template #media>
<f7-icon icon="icon-f7" />
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-list-item link="#" title="Ultra long text goes here, no, it is really really long">
<template #media>
<f7-icon icon="icon-f7" />
</template>
</f7-list-item>
<f7-block-footer>
<p>This list block will look like "inset" only on tablets (iPad)</p>
</f7-block-footer>
</f7-list>
<f7-block-title>Media Lists</f7-block-title>
<f7-block>
<p>
Media Lists are almost the same as Data Lists, but with a more flexible layout for
visualization of more complex data, like products, services, users, etc.
</p>
</f7-block>
<f7-block-title>Songs</f7-block-title>
<f7-list media-list dividers-ios strong-ios outline-ios>
<f7-list-item
link="#"
title="Yellow Submarine"
after="$15"
subtitle="Beatles"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
>
<template #media>
<img
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/people-160x160-1.jpg"
width="80"
/>
</template>
</f7-list-item>
<f7-list-item
link="#"
title="Don't Stop Me Now"
after="$22"
subtitle="Queen"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
>
<template #media>
<img
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/people-160x160-2.jpg"
width="80"
/>
</template>
</f7-list-item>
<f7-list-item
link="#"
title="Billie Jean"
after="$16"
subtitle="Michael Jackson"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
>
<template #media>
<img
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/people-160x160-3.jpg"
width="80"
/>
</template>
</f7-list-item>
</f7-list>
<f7-block-title>Mail App</f7-block-title>
<f7-list media-list dividers-ios strong-ios outline-ios>
<f7-list-item
link="#"
title="Facebook"
after="17:14"
subtitle="New messages from John Doe"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
<f7-list-item
link="#"
title="John Doe (via Twitter)"
after="17:11"
subtitle="John Doe (@_johndoe) mentioned you on Twitter!"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
<f7-list-item
link="#"
title="Facebook"
after="16:48"
subtitle="New messages from John Doe"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
<f7-list-item
link="#"
title="John Doe (via Twitter)"
after="15:32"
subtitle="John Doe (@_johndoe) mentioned you on Twitter!"
text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla sagittis tellus ut turpis condimentum, ut dignissim lacus tincidunt. Cras dolor metus, ultrices condimentum sodales sit amet, pharetra sodales eros. Phasellus vel felis tellus. Mauris rutrum ligula nec dapibus feugiat. In vel dui laoreet, commodo augue id, pulvinar lacus."
/>
</f7-list>
<f7-block-title>Something more simple</f7-block-title>
<f7-list media-list dividers-ios strong-ios outline-ios>
<f7-list-item title="Yellow Submarine" subtitle="Beatles">
<template #media>
<img
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/fashion-88x88-1.jpg"
width="44"
/>
</template>
</f7-list-item>
<f7-list-item link="#" title="Don't Stop Me Now" subtitle="Queen">
<template #media>
<img
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/fashion-88x88-2.jpg"
width="44"
/>
</template>
</f7-list-item>
<f7-list-item title="Billie Jean" subtitle="Michael Jackson">
<template #media>
<img
style="border-radius: 8px"
src="https://cdn.framework7.io/placeholder/fashion-88x88-3.jpg"
width="44"
/>
</template>
</f7-list-item>
</f7-list>
</f7-page>
</template>
<script>
import {
f7Navbar,
f7Page,
f7BlockTitle,
f7Block,
f7List,
f7ListItem,
f7ListGroup,
f7BlockFooter,
f7Icon,
f7Toggle,
} from 'framework7-vue';
export default {
components: {
f7Navbar,
f7Page,
f7BlockTitle,
f7Block,
f7List,
f7ListItem,
f7ListGroup,
f7BlockFooter,
f7Icon,
f7Toggle,
},
};
</script>