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()
  }
})