-
Get Started
-
Vue Components
- Accordion
- Action Sheet / Actions
- Badge
- Block / Content Block
- Button
- Cards
- Checkbox
- Chips / Tags
- Contacts List
- Floating Action Button
- Grid / Layout Grid
- Icon
- Inputs / Form Inputs
- Link
- List View
- List Item
- List Button
- List Index
- Login Screen
- Messagebar
- Messages
- Navbar
- Page
- Panel / Side Panels
- Photo Browser
- Popover
- Popup
- Preloader
- Progressbar
- Radio
- Range Slider
- Searchbar
- Sheet Modal
- Smart Select
- Sortable
- Statusbar
- Stepper
- Subnavbar
- Swiper
- Swipeout
- Tabs
- Toggle
- Toolbar / Tabbar
- View
- Virtual List
Virtual List Vue Component
Virtual List is not a separate Vue component, but just a particular case of using <f7-list>, <f7-list-item> Vue components and special Framework7's Virtual List component.
Virutal List Properties
Prop | Type | Default | Description |
---|---|---|---|
<f7-list> properties | |||
virtual-list | boolean | false | Enables Virtual List |
virtual-list-params | object | Object with Virtual List Parameters |
Virutal List Events
Event | Description |
---|---|
<f7-list> 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 |
Access To Virtual List Instance
You can access Virtual List initialized instance by accessing .f7VirtualList
<f7-list> component's property.
Examples
Here is the full page example with Virtual List and Searchbar to search through Virtual List items:
<template>
<f7-page>
<f7-navbar back-link="Back" title="Virtual List"></f7-navbar>
<!--
Searchbar to search thorugh VL Items
List to search specified in "search-list" prop
-->
<f7-searchbar
search-container="#search-list"
search-item="li"
search-in=".item-title"
></f7-searchbar>
<!-- This block will become visible when there is nothing found -->
<f7-list class="searchbar-not-found">
<f7-list-item title="Nothing found"></f7-list-item>
</f7-list>
<!-- Search through this list -->
<f7-list
id="search-list"
class="searchbar-found"
media-list
virtual-list
:virtual-list-params="{ items: items, height: 63, searchAll: searchAll, renderExternal: renderExternal }"
>
<ul>
<!-- we will get the items we need to render from VL render external callback -->
<f7-list-item
v-for="(item, index) in vlData.items"
:key="index"
media-item
link="#"
:title="item.title"
:subtitle="item.subtitle"
:style="`top: ${vlData.topPosition}px`"
></f7-list-item>
</ul>
</f7-list>
</f7-page>
</template>
<script>
export default {
data: function () {
var items = [];
for (var i = 1; i <= 10000; i++) {
items.push({
title: 'Item ' + i,
subtitle: 'Subtitle ' + i
});
}
return {
items: items,
vlData: {},
};
},
methods: {
// Function to proceed search results
searchAll: function (query, items) {
var found = [];
for (var i = 0; i < items.length; i += 1) {
if (items[i].title.toLowerCase().indexOf(query) >= 0 || query.trim() === '') found.push(i);
}
return found; // return array with mathced indexes
},
renderExternal(vl, vlData) {
this.vlData = vlData;
},
},
}
</script>