Advanced list view component with gesture, swipe and drag & drop support.
Use it along Mobiscroll forms, pages or in any web or mobile hybrid app. Suited for small to large screens.
Shipping with useful features for a refined UX, including:
Support for alternating row color
Use it with single, multi-line text or custom content
Render cards instead of full-width rows
Enhance content with images, avatars and icons
Built-in support for sorting and ordering
Multiple data-source support
Load on demand capabilities
Top positioned sticy header for segmenting the list
Simple to advanced grouping capabilities
CRUD with undo functionality
Full-blown gesture support
Hierarchical listviews with variable depth
Multiple theme support
As part of Gesture enabled listview it can be picked up with the Framework and Complete licenses or with the component license .
Listview available for other frameworks.
Viewing demos & code for
Browse the various components and demos
Close
Listview - Basic
Change demo
Javascript Listview demo for creating a simple list of items. Add stripes for alternating background colors of list items. Plain JavaScript API.
Listview - Content
Change demo
Javascript Listview demo for rendering different types of content. Use it for multi-line text, cards or any content with custom CSS. Plain JavaScript API.
Listview - Image/Icon/Avatar
Change demo
Javascript Listview image demo for rendering content with regular images, icons and avatars. Customize it with custom CSS. Plain JavaScript API.
Listview - Selecting items
Change demo
Javascript Listview item selection example. Select a single item or enable multiple selection for batch operations. Plain JavaScript API.
Listview - Sorting & ordering
Change demo
Javascript Listview reorder demo. Grab and sort from drag handle on the left or right side, or tap/click and hold to sort. Plain JavaScript API.
Listview - Grouping
Change demo
Javascript Listview demo with group headers. Use it to logically segment and group items without creating multiple lists. Plain JavaScript API.
Listview - Create, Read, Update, Delete
Change demo
Create, Read, Update, Delete
Javascript Listview demo with CRUD operations & swipe actions. Slide right to update and left to delete items. Plain JavaScript API.
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 - Swipe actions
Change demo
Javascript Listview demo with swipe revealing actions. Render an action list or action menu when sliding items left and right. 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 - Data sources
Change demo
Javascript Listview demo with different ways of getting and passing data. Supporting hardcoded lists, dynamic and remote data. 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 - Master-detail view
Change demo
Build a two pane master-detail view with the help of the listview. Use the grid layout to set up the two columns - left side for a list of names,
right side for showing the details. If you want to get into the details you could even hide the first column and build a drawer or use a
hamburger menu for the master list.
Use the navigation component for the tabs and cards for building the layout of the details view.
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) {
var currHeader;
for (var i = listDeviders.length - 1; i >= 0; --i) {
if (this.pageYOffset > listDeviders[i].offsetTop) {
currHeader = listDeviders[i];
break;
}
}
firstletter = currHeader.textContent || '';
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');
mobiscroll.toast({
message: 'Favorites updated'
});
}
}
});
menustrip = mobiscroll.optionlist('.md-alfabet', {
theme : ' ',
themeVariant : ' ' ,
type: 'tabs',
display : 'top',
select : 'single',
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">
<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">
<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="https://img.mobiscroll.com/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; }
.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;
}
.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;
}
.example-full .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 {
display: none;
padding: 1.5em 2.5em;
height: 571px;
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
.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;
}
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
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!
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! 👍
Customize & try this demo locally
Sign in or start your free trial
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!