Framework7 Pull To Refresh
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>
<!-- Required meta tags-->
<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">
<!-- Color theme for statusbar (Android only) -->
<meta name="theme-color" content="#2196f3">
<!-- Your app title -->
<title>My App</title>
<!-- Path to Framework7 Library Bundle CSS -->
</head>
<body>
<!-- App root element -->
<div id="app">
<!-- Your main view, should have "view-main" class -->
<div class="view view-main">
<!-- Initial Page, "data-name" contains page name -->
<div data-name="home" class="page">
<!-- Top Navbar -->
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="title">Awesome App</div>
</div>
</div>
<!-- Bottom Toolbar -->
<div class="toolbar toolbar-bottom">
<div class="toolbar-inner">
<!-- Toolbar links -->
<a href="#" class="link">Link 1</a>
<a href="#" class="link">Link 2</a>
</div>
</div>
<!-- Scrollable page content -->
<div class="page-content ptr-content" data-ptr-mousewheel="true">
<div class="ptr-preloader">
<div class="preloader"></div>
...
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');
// Pull to refresh content
var $ptrContent = $$('.ptr-content');
// Add 'refresh' listener on it
$ptrContent.on('ptr:refresh', function(e) {
app.dialog.alert('Pull to Refresh was activated.');
// When loading done, we need to reset it
app.ptr.done(); // or e.detail();
})
var allowExpand = true
Dom7(document).on('ptr:pullstart', () => {
console.log('ptr:pullstart')
allowExpand = false
})
Dom7(document).on('ptr:done', () => {
console.log('ptr:done')
allowExpand = true
})
Dom7(document).on('card:beforeopen', (e, p) => {
if (!allowExpand) {
p.prevent()
}
})