Framework7 Virtuallist Height MOD
by Maiki Nahara
HTML
<script src="http://framework7.io/fonts/Framework7Icons-Regular.eot"></script>
<script src="http://framework7.io/fonts/Framework7Icons-Regular.ttf"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/5.4.5/css/framework7.bundle.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/framework7/5.4.5/css/framework7.css">
<link rel="stylesheet" href="http://framework7.io/css/framework7-icons.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/framework7/5.4.5/js/framework7.bundle.js"></script>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui, viewport-fit=cover">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="theme-color" content="#2196f3">
<title>My App</title>
</head>
<body>
<div id="app">
<div class="view view-main">
<div data-name="home" class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner sliding">
<div class="title">Virtual List</div>
<div class="subnavbar">
<form data-search-container=".virtual-list" data-search-item="li" data-search-in=".item-title" class="searchbar searchbar-init">
<div class="searchbar-inner">
<div class="searchbar-input-wrap">
<input type="search" placeholder="Search"/>
<i class="searchbar-icon"></i>
<span class="input-clear-button"></span>
</div>
<span class="searchbar-disable-button if-not-aurora">Cancel</span>
</div>
</form>
</div>
</div>
</div>
<div class="searchbar-backdrop"></div>
<div class="page-content">
<div class="list media-list virtual-list">
</div>
</div>
</div>
</div>
</div>
</body>
CSS
.demolist {
margin-top: 0px;
}
JavaScript
var app = new Framework7({
// App root element
root: '#app',
// App Name
name: 'Pull To Refresh Demo',
// App id
id: 'com.myapp.test',
// Enable swipe panel
panel: {
swipe: 'left',
},
theme: 'ios',
// Add default routes
routes: [{
path: '/about/',
url: 'about.html',
}, ],
// ... other parameters
});
var $$ = Dom7;
var mainView = app.views.create('.view-main');
var subTextArray = ["Addition Text", "Addition Text Addition Text Addition Text Addition Text Addition Text Addition Text Addition Text Addition Text Addition Text Addition Text Addition Text Addition Text ", "", "hello<br>world", "<h1>hello world</h1>"];
var randomBreak = ["<br> random break",""];
var items = [];
for (var i = 1; i <= 15; i++) {
items.push({
id: app.utils.id(),
title: 'Item ' + i,
subtitle: 'Subtitle ' + i + randomBreak[Math.floor(Math.random()*randomBreak.length)],
additional: subTextArray[Math.floor(Math.random()*subTextArray.length)],
IMAGESIZE : Math.floor(Math.random() * 51) + 50,
});
}
var virtualList = app.virtualList.create({
el: '.virtual-list',
items: items,
searchAll: function (query, items) {
var found = [];
for (var i = 0; i < items.length; i++) {
if (items[i].title.toLowerCase().indexOf(query.toLowerCase()) >= 0 || query.trim() === '') found.push(i);
}
return found; //return array with mathced indexes
},
itemTemplate:
'<li id="{{id}}">'+
' <div class="item-content">'+
'<div class="item-media"><img src="data:image/gif;base64,R0lGODlhAQABAIAAAMLCwgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" width="80" height="{{IMAGESIZE}}"/></div>' +
' <div class="item-inner">'+
' <div class="item-title-row">'+
' <div class="item-title">{{title}}</div>'+
' </div>'+
' <div class="item-subtitle">{{subtitle}}</div>'+
' <div class="item-text">{{additional}}</div>'+
' </div>'+
' </div>'+
' </li>',
/* '<li>' +
'<a...