Listview - Remove/Undo
Change demo
Javascript Listview demo with swipe-away delete and built-in undo functionality. Use it for laying out notifications or any data. Plain JavaScript API.
Listview - Hierarchy
Change demo
Javascript Listview with multi-level hierarchy and drill-down interface. Featuring images, icons and text. Plain JavaScript API.
Listview - Checklist
Change demo
Javascript Drag & Drop checklist/tasklist with swipe actions to add/remove items from todo listview. Sorting is supported. Plain JavaScript API.
Listview - Filtering
Change demo
Javascript Listview demo with dynamic data and live filtering. Add and remove items on the fly or reload the full list. Plain JavaScript API.
Listview - Load on demand
Change demo
Javascript Listview load on demand demo. Load data from a REST service and populate the list as users scroll content. Plain JavaScript API.
Listview - Load more
Change demo
Javascript Listview demo with load more button for loading additional items from a REST service. Get and display records from JSON. Plain JavaScript API.
Listview - Event handlers
Change demo
Javascript Listview demo with event hooks for deep integration and custom functionality. With source code. Plain JavaScript API.
Listview - Quick Navigation
Change demo
Javascript Listview demo with quick access to list segments. Alphabetically group items and provide a tab list for selection. Plain JavaScript API.
var timer,
firstletter,
listview,
menustrip,
currSelected = "A",
start = new Date(),
isScrolled = false,
preventScroll = false,
isFavorite = false,
popup = document.querySelector('.md-popup'),
list = document.getElementById('demo'),
listDeviders = document.querySelectorAll('li[data-role=list-divider]');
function handleScroll() {
if (new Date() - start > 150 && !isFavorite && !preventScroll) {
firstletter = document.elementFromPoint(0, 100).textContent[0];
isScrolled = true;
if (currSelected != firstletter) {
menustrip.navigate(document.querySelector('.md-item-' + firstletter), true);
}
currSelected = firstletter;
start = new Date();
isScrolled = false;
}
preventScroll = false;
}
listview = mobiscroll.listview(list, {
theme : ' ',
themeVariant : ' ' ,
lang : ' ' ,
swipe : false,
enhance : true,
onItemTap : function (event, inst) {
var target = event.domEvent.target;
if (target.classList.contains('mbsc-ic')) {
event.target.classList.toggle('star3');
target.classList.toggle('mbsc-ic-star3');
target.classList.toggle('mbsc-ic-star');
}
}
});
menustrip = mobiscroll.menustrip('.md-alfabet', {
theme : ' ',
themeVariant : ' ' ,
type: 'tabs',
display : 'top',
onItemTap : function (event, inst) {
var i,
text = event.target.innerHTML,
listItems = list.querySelectorAll('.mbsc-lv-item:not(.star3)'),
favoriteItems = list.querySelectorAll('.star3'),
favoriteCont = document.querySelector('.md-no-bookmark');
preventScroll = true;
isFavorite = event.target.classList.contains('md-item-star');
for (i = 0; i < listItems.length; ++i) {
listItems[i].style.display = isFavorite ? 'none' : 'block';
}
for (i = 0; i < listDeviders.length; ++i) {
listDeviders[i].style.display = isFavorite ? 'none' : 'block';
}
favoriteCont.style.display = isFavorite && favoriteItems.length == 0 ? 'block' : 'none';
if (!isScrolled && !isFavorite) {
document.body.scrollTop = list.querySelector('.header' + text).nextElementSibling.offsetTop - this.offsetHeight;
popup.classList.add('md-show-popup');
popup.innerHTML = text;
clearTimeout(timer);
timer = setTimeout(function () {
popup.classList.remove('md-show-popup');
}, 1500);
}
}
});
window.addEventListener('scroll', handleScroll);
window.addEventListener('touchmove', handleScroll);
<div class="md-navigate">
<div class="md-popup">
c</div>
<ul class="md-alfabet" style="display: none">
<li class="md-item-star"><span class="mbsc-ic mbsc-ic-star3"></span</li>
<li class="md-item-A" data-selected="true">A</li>
<li class="md-item-B">B</li>
<li class="md-item-C">C</li>
<!-- Showing partial data. Download full source. -->
</ul>
<ul id="demo" class="md-list" style="display: none">
<li class="md-no-bookmark">
<div class="md-nob-title">Traveling to the same place frequently?</div>
<div class="md-nob-txt">You can bookmark airports by tapping on the star to the left and they will show up here.</div>
<div class="md-nob-separator"></div>
<img class="md-nob-img" src="/Content/img/demos/lv-bookmark.png" >
</li>
<li data-role ="list-divider" class="headerA">A</li>
<li data-icon ="star">Abilene, TEXAS<span class="md-iata">(ABI)</span></li>
<li data-icon ="star">Agana / Tamuning, GUAM<span class="md-iata">(GUM)</span></li>
<li data-icon ="star">Aguadilla, PUERTO RICO<span class="md-iata">(BQN)</span></li>
<li data-icon ="star">Akron / Canton, OHIO<span class="md-iata">(CAK)</span></li>
<li data-role ="list-divider" class="headerB">B</li>
<li data-icon ="star">Baltimore / Glen Burnie, MARYLAND<span class="md-iata">(BWI)</span></li>
<li data-icon ="star">Bangor, MAINE<span class="md-iata">(BGR)</span></li>
<li data-icon ="star">Bar Harbor, MAINE<span class="md-iata">(BHB)</span></li>
<li data-icon ="star">Baton Rouge, LOUISIANA<span class="md-iata">(BTR)</span></li>
<!-- Showing partial data. Download full source. -->
</ul>
</div>
.demo-main-cont.demo-comp-listview { padding: 0; }
.demo-comp-listview .demo-note { margin: 10px; }
.demo-phone-screen #demombscr {
position: static;
}
.md-navigate .md-list .mbsc-lv-item {
padding-right: 4em;
backface-visibility: hidden;
-webkit-transform: none;
-moz-transform: none;
transform: none;
}
.md-popup {
position: fixed;
width: 100px;
height: 100px;
margin: -50px 0 0 -50px;
border-radius: 100px;
background: rgba(78, 204, 196, .6);
color: #fff;
font-size: 56px;
font-family: sans-serif;
line-height: 100px;
text-align: center;
top: 50%;
left: 50%;
z-index: 10;
opacity: 0;
pointer-events: none;
-webkit-transition: opacity 300ms;
-moz-transition: opacity 300ms;
transition: opacity 300ms;
}
.demo-phone .md-popup {
position: absolute;
}
.md-show-popup {
opacity: 1;
}
.md-alfabet .mbsc-ms-item {
min-width: 2.5em;
}
.md-iata {
position: absolute;
top: 50%;
right: 1em;
margin-top: -9px;
}
.demo-theme-material .md-popup {
background: rgba(0, 150, 136, .6);
}
.demo-theme-material-dark .md-popup {
background: rgba(129, 204, 196, .6);
}
.demo-theme-ios .md-popup,
.demo-theme-ios-classic .md-popup {
background: rgba(0, 122, 255, .6);
}
.demo-theme-android-holo .md-popup,
.demo-theme-android-holo-light .md-popup {
background: rgba(49, 182, 231, .6);
}
.demo-theme-ios .md-popup {
background: rgba(0, 122, 255, .6);
}
.demo-theme-wp .md-popup,
.demo-theme-wp-light .md-popup {
background: rgba(26, 159, 224, .6);
}
.demo-theme-jqm .md-popup {
background: rgba(51, 136, 204, .7);
}
.example-full .md-popup,
.demo-fullscreen .md-popup {
position: fixed;
}
.md-item-star .mbsc-ic-star3 {
font-size: 14px;
}
/* no bookmark section */
.md-navigate .md-list .mbsc-lv-item.md-no-bookmark {
padding: 1.5em 2.5em;
height: 571px;
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
.demo-theme-wp-light .md-list .mbsc-lv-item.md-no-bookmark,
.demo-theme-wp .md-list .mbsc-lv-item.md-no-bookmark {
height: 547px;
}
.demo-theme-ios .md-list .mbsc-lv-item.md-no-bookmark {
height: 574px;
}
.demo-theme-android .md-list .mbsc-lv-item.md-no-bookmark {
height: 577px;
}
.demo-theme-android-holo-light .md-list .mbsc-lv-item.md-no-bookmark,
.demo-theme-android-holo .md-list .mbsc-lv-item.md-no-bookmark {
height: 575px;
}
.md-nob-separator {
height: 1px;
margin-bottom: 38px;
width: 100%;
background: #CACACA;
}
.md-nob-title {
text-align: center;
padding: 1em;
font-size: 16px;
}
.md-nob-txt {
text-align: center;
padding: 1em 0 2em 0;
color: #a0a0a0;
font-size: 14px;
}
.md-navigate .mbsc-lv .md-no-bookmark.mbsc-lv-item .md-nob-img {
position: static;
display: block;
max-width: 274px;
width: 274px;
max-height: initial;
margin: 0 auto;
border: 1px solid #ccc;
margin-bottom: 14px;
transform: none;
}
.md-no-bookmark {
display: none;
padding: 2em;
background: #f7f7f7;
font-size: 16px;
}
.md-navigate .md-no-bookmark.mbsc-lv-item-active:after {
background: none!important;
}
.demo-theme-jqm .md-navigate .md-list .mbsc-lv-item.md-no-bookmark {
padding-top: 70px;
white-space: normal;
}
Looking for something you didn't see or have a sales question? Ask us about it, we're here to help.
Ask us anything
Customize & try demos locally
Sign in or start your free trial
What framework are you using?
Javascript
jQuery
AngularJS
Angular
React
Other
Ionic Angular
Select a framework
Introducing the next generation of Mobiscroll
The Mobiscroll 5 Beta 4 includes the brand new Scheduler , Agenda and Event calendar , Date, time, calendar and Range picker components.
We’ll be gradually adding more components and functionality. If you want to give the new version a go, you can check them out below.
Other highlights
Redesigned event calendar, scheduler with drag & drop
A new way of working with recurring events
Updated themes with dynamic dark mode
New date & time pickers
Range picker with advanced customization
Dynamic options with global updates
Read the full blogpost
Get in touch
Customize & try this demo locally
Sign in or start your free trial
Install demo in your app
Follow this quick, two minute install guide
Close window
Install demo in your app
Follow this quick, two minute install guide
Close window
Customize & try demos locally
How would you like to do it?
Install demo in your app
Follow this quick, two minute install guide
Close window
Thanks for downloading
Try and customize the app locally
Extract the zip file and run the project like any Ionic app. Make sure to have Ionic CLI installed and open the terminal in the app root folder.
Step 1. Run in root folder
$ npm install
Step 2. Start the app
$ ionic serve
Let us know if we can help and enjoy!
Need to update your password?
Enter a new password and hit the button below to change it!
You are setting a password for the account
Need to update your password?
Your password has been changed!
Thanks for downloading
Customize demos locally
Everything is set up so that you can dig in right away and start exploring.
We have set up a trial so that you can try the demos locally.
Extract the zip file and open the demo in your favorite browser.
To install Mobiscroll in your project
follow instructions from this page .
Let us know if we can help and enjoy! 👍
Thanks for downloading
Customize demos locally
Please extract the zip file and run the project like any Angular CLI app.
Make sure to have the Angular CLI installed.
For installation and usage, extract the zip file and open a terminal window and follow these steps.
Step 1. Run in root folder
$ npm install
Step 2. Start the app
$ ng serve --open
Let us know if we can help and enjoy! 👍
Thanks for downloading
Customize demos locally
Everything is set up so that you can dig in right away and start exploring.
We have set up a trial so that you can try the demos locally.
The easiest way to get started is to follow the installation steps and by
grabbing the code directly from the demo page. Let us know if we can help and enjoy! 👍
You'll find a fully functional Kitchen-sink Ionic app in the zip file.
Thanks for downloading
Customize demos locally
Everything is set up so that you can dig in right away and start exploring.
We have set up a trial so that you can try the demos locally.
The demos are using Babel's in-browser ES6 and JSX transformer.
Extract the zip file and open the demo in your browser. To install Mobiscroll in your project
follow instructions from this page .
Let us know if we can help and enjoy! 👍