Angular JS Listview
Listview for Angular JS and Ionic 1
Listview for Angular JS and Ionic 1
Listview for Angular JS and Ionic 1
Learn moreAdvanced 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
Listview available for other frameworks.
Viewing demos & code for
Listview - Basic
mobiscroll.settings = {
lang: '',
theme: '',
themeVariant: ''
};
angular
.module('demoApp', ['mobiscroll-form', 'mobiscroll-listview'])
.controller('demoController', ['$scope', function ($scope) {
$scope.movies = [
{ title: 'The Shawshank Redemption (1994)' },
{ title: 'The Godfather (1972)' },
{ title: 'The Godfather: Part II (1974)' },
{ title: 'The Dark Knight (2008)' },
{ title: '12 Angry Men (1957)' },
{ title: 'Schindler\'s List (1993)' },
{ title: 'The Lord of the Rings: The Return of the King (2003)' },
{ title: 'Pulp Fiction (1994)' }
];
$scope.moreMovies = [
{ title: 'The Good, the Bad and the Ugly (1966)' },
{ title: 'Fight Club (1999)' },
{ title: 'The Lord of the Rings: The Fellowship of the Ring (2001)' },
{ title: 'Forrest Gump (1994)' },
{ title: 'Star Wars: Episode V - The Empire Strikes Back (1980)' },
{ title: 'Inception (2010)' },
{ title: 'The Lord of the Rings: The Two Towers (2002)' },
{ title: 'One Flew Over the Cuckoo\'s Nest (1975)' }
];
$scope.stripedSettings = {
striped: true
}
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form="formSettings">
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Simple</div>
<ul mobiscroll-listview mobiscroll-data="movies" class="mbsc-cloak">
<li>{{item.title}}</li>
</ul>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Striped</div>
<ul mobiscroll-listview="stripedSettings" mobiscroll-data="moreMovies" class="mbsc-cloak">
<li>{{item.title}}</li>
</ul>
</div>
</div>
</div>
Listview - Content
mobiscroll.settings = {
lang: '',
theme: '',
themeVariant: ''
};
angular
.module('demoApp', ['mobiscroll-listview', 'mobiscroll-form', 'mobiscroll-cards'])
.controller('demoController', ['$scope', function ($scope) {
$scope.multilineList = [{
title: 'Electric Smartscooter',
text: 'Gogoro Smartscooter is world’s first connected two-wheeled electric vehicle.'
}, {
title: 'The Solar Bike',
text: 'An electric bike that incorporates solar panels and producing enough energy to use it 30 km a day'
}, {
title: 'Smallest Quadricopter',
text: 'The Dutch gadget-manufacturer TRNDlabs reveals the smallest quadricopter of the world'
}, {
title: 'Glow Headphones',
text: 'Discover the world’s first laser headphones that pulse to the music'
}];
$scope.multilineSettings = {
enhance: true,
swipe: false
};
$scope.customList = [{
title: 'The Intouchables (2011)',
rate: 8.5
}, {
title: 'The Shawshank Redemption(1994)',
rate: 9.2
}, {
title: 'Fight Club(1999)',
rate: 8.8
}, {
title: 'Inception(2010)',
rate: 8.7
}];
$scope.customSettings = {
enhance: true,
swipe: false
};
$scope.cardList = [{
title: 'Netflix',
text: 'Sherlock Series 3 is now avalable on Netflix',
img: 'https://img.mobiscroll.com/demos/netflix.png'
}, {
title: 'Angry birds',
text: 'Dont forget your daily Arena entry.',
img: 'https://img.mobiscroll.com/demos/angrybirds.png'
}, {
title: 'Candycam',
text: 'A new update is available!',
img: 'https://img.mobiscroll.com/demos/candycam.png'
}];
$scope.cardsSettings = {
swipe: false
};
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Multiline text</div>
<ul mobiscroll-listview="multilineSettings" mobiscroll-data="multilineList" class="mbsc-cloak">
<li>
<h3>{{item.title}}</h3>
<p>{{item.text}}</p>
</li>
</ul>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Custom CSS</div>
<ul mobiscroll-listview="customSettings" mobiscroll-data="customList" class="mbsc-cloak md-custom-listview">
<li>
{{item.title}}
<span class="md-star-icon mbsc-ic mbsc-ic-star3">{{item.rate}}</span>
</li>
</ul>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Cards</div>
<ul mobiscroll-listview="cardsSettings" mobiscroll-data="cardList" class="mbsc-cloak">
<li mobiscroll-card>
<mobiscroll-card-content>
<img src="{{item.img}}" class="mbsc-avatar" draggable="false" />
<mobiscroll-card-title>{{item.title}}</mobiscroll-card-title>
<mobiscroll-card-subtitle>{{item.text}}</mobiscroll-card-subtitle>
</mobiscroll-card-content>
</li>
</ul>
</div>
</div>
</div>
.md-custom-listview .mbsc-lv-item {
background: #c3e8fb;
padding-top: 30px;
padding-bottom: 30px;
}
.md-custom-listview .md-star-icon {
float: right;
font-weight: bold;
color: #ff8400;
}
.md-custom-listview .md-star-icon:before {
margin-right: 5px;
}
Listview - Image/Icon/Avatar
mobiscroll.settings = {
lang: '',
theme: '',
themeVariant: ''
};
angular
.module('demoApp', ['mobiscroll-listview', 'mobiscroll-form'])
.controller('demoController', ['$scope', function ($scope) {
$scope.movies = [{
img: 'Requiem_for_a_Dream.png',
title: 'Requiem for a Dream',
director: 'Darren Aronofsky'
}, {
img: 'The_Dark_Knight.png',
title: 'The Dark Knight',
director: 'Christopher Nolan'
}, {
img: 'Despicable_Me.png',
title: 'Despicable Me',
director: 'Pierre Coffin and Chris Renaud'
}, {
img: 'Mr_Nobody.png',
title: 'Mr. Nobody',
director: 'Jaco Van Dormael'
}];
$scope.imageSettings = {
enhance: true,
swipe: false
};
$scope.icons = [{
icon: 'line-user',
name: 'Edit profile'
}, {
icon: 'line-settings',
name: 'Settings'
}, {
icon: 'line-heart',
name: 'Rate'
}, {
icon: 'line-bubble',
name: 'Tell a friend'
}];
$scope.iconSettings = {
enhance: true,
swipe: false
};
$scope.users = [{
imgsrc: 'm1.png',
user: 'Barry Lyon',
phone: '(202) 555-0193'
}, {
imgsrc: 'f1.png',
user: 'Hortense Tinker',
phone: '(202) 555-0127'
}, {
imgsrc: 'm2.png',
user: 'Carl Hambledon',
phone: '(202) 555-0147'
}, {
imgsrc: 'f2.png',
user: 'Arlene Sharman',
phone: '(202) 555-0190'
}];
$scope.avatarSettings = {
enhance: true,
swipe: false
};
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Image</div>
<ul mobiscroll-listview="imageSettings" class="md-movies mbsc-cloak" mobiscroll-data="movies">
<li>
<img ng-src="https://img.mobiscroll.com/demos/{{item.img}}" />
<h3>{{item.title}}</h3>
<p>Directed by {{item.director}}</p>
</li>
</ul>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Icon</div>
<ul mobiscroll-listview="iconSettings" mobiscroll-data="icons" class="mbsc-cloak">
<li data-icon="{{item.icon}}">{{item.name}}</li>
</ul>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Avatar</div>
<ul mobiscroll-listview="avatarSettings" mobiscroll-data="users" class="mbsc-cloak">
<li>
<img ng-src="https://img.mobiscroll.com/demos/{{item.imgsrc}}">
<h3>{{item.user}}</h3>
<p>{{item.phone}}</p>
</li>
</ul>
</div>
</div>
</div>
Listview - Selecting items
angular
.module('demoApp', ['mobiscroll-listview', 'mobiscroll-form'])
.controller('demoController', ['$scope', function ($scope) {
$scope.movies = [
{ title: 'The Shawshank Redemption (1994)', selected: false },
{ title: 'The Godfather (1972)', selected: false },
{ title: 'The Godfather: Part II (1974)', selected: true },
{ title: 'The Dark Knight (2008)', selected: false },
{ title: '12 Angry Men (1957)', selected: false },
{ title: 'Schindler\'s List (1993)', selected: false },
{ title: 'The Lord of the Rings: The Return of the King (2003)', selected: false },
{ title: 'Pulp Fiction (1994)', selected: false }
];
$scope.moreMovies = [
{ title: 'The Good, the Bad and the Ugly (1966)', selected: false },
{ title: 'Fight Club (1999)', selected: false },
{ title: 'The Lord of the Rings: The Fellowship of the Ring (2001)', selected: true },
{ title: 'Forrest Gump (1994)', selected: false },
{ title: 'Star Wars: Episode V - The Empire Strikes Back (1980)', selected: true },
{ title: 'Inception (2010)', selected: true },
{ title: 'The Lord of the Rings: The Two Towers (2002)', selected: false },
{ title: 'One Flew Over the Cuckoo\'s Nest (1975)', selected: false }
];
$scope.formSettings = {
lang: '',
theme: '',
themeVariant: ''
};
$scope.singleSettings = {
lang: '',
theme: '',
themeVariant: '',
select: 'single'
}
$scope.multipleSettings = {
lang: '',
theme: '',
themeVariant: '',
select: 'multiple'
}
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form="formSettings">
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Single item select</div>
<ul mobiscroll-listview="singleSettings" mobiscroll-data="movies" class="mbsc-cloak">
<li data-selected="{{item.selected}}">{{item.title}}</li>
</ul>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Multiple item select</div>
<ul mobiscroll-listview="multipleSettings" mobiscroll-data="moreMovies" class="mbsc-cloak">
<li data-selected="{{item.selected}}">{{item.title}}</li>
</ul>
</div>
</div>
</div>
Listview - Sorting & ordering
mobiscroll.settings = {
lang: '',
theme: '',
themeVariant: ''
};
angular
.module('demoApp', ['mobiscroll-form', 'mobiscroll-listview'])
.controller('demoController', ['$scope', function ($scope) {
$scope.data = [{
imgsrc: 'm1.png',
h3: 'Barry Lyon',
p: '(202) 555-0193'
}, {
imgsrc: 'f1.png',
h3: 'Hortense Tinker',
p: '(202) 555-0127'
}, {
imgsrc: 'm2.png',
h3: 'Carl Hambledon',
p: '(202) 555-0147'
}, {
imgsrc: 'f2.png',
h3: 'Arlene Sharman',
p: '(202) 555-0190'
}];
$scope.settings = {
swipe: false,
sortable: {
handle: 'right'
},
enhance: true
};
$scope.leftSettings = {
swipe: false,
sortable: {
handle: 'left'
},
enhance: true
};
$scope.noHandleSettings = {
swipe: false,
sortable: true,
enhance: true
};
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Handle on the right</div>
<ul mobiscroll-listview="settings" mobiscroll-data="data" class="mbsc-cloak">
<li><img ng-src="https://img.mobiscroll.com/demos/{{item.imgsrc}}" />
<h3>{{item.h3}}</h3>
<p>{{item.p}}</p>
</li>
</ul>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Handle on the left</div>
<ul mobiscroll-listview="leftSettings" mobiscroll-data="data" class="mbsc-cloak">
<li><img ng-src="https://img.mobiscroll.com/demos/{{item.imgsrc}}" />
<h3>{{item.h3}}</h3>
<p>{{item.p}}</p>
</li>
</ul>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Tap and hold to start reordering</div>
<ul mobiscroll-listview="noHandleSettings" mobiscroll-data="data" class="mbsc-cloak">
<li><img ng-src="https://img.mobiscroll.com/demos/{{item.imgsrc}}" />
<h3>{{item.h3}}</h3>
<p>{{item.p}}</p>
</li>
</ul>
</div>
</div>
</div>
Listview - Sticky header
angular
.module('demoApp', ['mobiscroll-listview'])
.controller('demoController', ['$scope', function ($scope) {
$scope.names = [{
name: 'A',
header: true
}, {
name: 'Audie Pennington'
}, {
name: 'Audrea Delaughter'
}, {
name: 'Augustine Brink'
}, {
name: 'Aurelio Deveau'
}, {
name: 'Aurora Marston'
}, {
name: 'B',
header: true
}, {
name: 'Bobby Weisman'
}, {
name: 'Bobbye Clapp'
}, {
name: 'Bobette Boyland'
}, {
name: 'Boris Latta'
}, {
name: 'Boyce Haller'
},
// Showing partial data. Download full source.
];
$scope.settings = {
theme: '',
themeVariant: '',
lang: '',
fixedHeader: true,
swipe: false
};
}]);
<div ng-app="demoApp" ng-controller="demoController">
<ul mobiscroll-listview="settings" mobiscroll-data="names" class="mbsc-cloak">
<li data-role="{{ item.header ? 'list-divider' : '' }}">{{item.name}}</li>
</ul>
</div>
Listview - Grouping
angular
.module('demoApp', ['mobiscroll-listview'])
.controller('demoController', ['$scope', function ($scope) {
$scope.drinks = [{
name: 'Non alcoholic drinks',
header: true
}, {
imgsrc: 'dCappuccino.jpg',
name: 'Cappuccino',
price: '$3.00'
}, {
imgsrc: 'dCoffee.jpg',
name: 'Coffee',
price: '$2.60'
}, {
imgsrc: 'dCola.jpg',
name: 'Coca Cola',
price: '$3.50'
}, {
imgsrc: 'dMilk.jpg',
name: 'Milk',
price: '$2.50'
}, {
imgsrc: 'dPepsi.jpg',
name: 'Pepsi',
price: '$3.50'
}, {
imgsrc: 'dTea.jpg',
name: 'Tea',
price: '$3.00'
}, {
imgsrc: 'dWater.jpg',
name: 'Water',
price: '$2.00'
}, {
name: 'Alcoholic drinks',
header: true
}, {
imgsrc: 'dBeer.jpg',
name: 'Beer',
price: '$3.00'
}, {
imgsrc: 'dGin.jpg',
name: 'Gin',
price: '$4.00'
}, {
imgsrc: 'dMartini.jpg',
name: 'Martini',
price: '$4.50'
}, {
imgsrc: 'dRum.jpg',
name: 'Rum',
price: '$5.00'
}, {
imgsrc: 'dWine.jpg',
name: 'Wine',
price: '$4.50'
}, {
imgsrc: 'dWhiskey.jpg',
name: 'Whiskey',
price: '$6.00'
}];
$scope.settings = {
theme: '',
themeVariant: '',
lang: '',
swipe: false,
enhance: true
};
}]);
<div ng-app="demoApp" ng-controller="demoController" class="md-groupsort">
<ul mobiscroll-listview="settings" mobiscroll-data="drinks" class="mbsc-cloak">
<li data-role="{{ item.header ? 'list-divider' : '' }}"><img ng-if="!item.header" ng-src="https://img.mobiscroll.com/demos/{{item.imgsrc}}" class="md-img" />{{item.name}} <span class="md-price">{{item.price}}</span> </li>
</ul>
</div>
.md-groupsort .mbsc-lv .mbsc-lv-item .md-img {
border-radius: 40px;
}
.md-price {
float: right;
}
Listview - Create, Read, Update, Delete
angular
.module('demoApp', ['mobiscroll-form', 'mobiscroll-listview'])
.controller('demoController', ['$scope', function ($scope) {
$scope.formSettings = {
lang: '',
theme: '',
themeVariant: ''
};
var formatDate = mobiscroll.util.datetime.formatDate,
now = formatDate('DD d hh:ii:ss A', new Date());
$scope.todo = [{
text: 'Check Mobiscroll demos',
time: now
},
{
text: 'Feed the pets',
time: now
},
{
text: 'Send an invitation email to Emily',
time: now
},
{
text: 'Watch the new Arrow episode',
time: now
},
{
text: 'Wash the dishes',
time: now
}
];
$scope.listviewSettings = {
theme: '',
themeVariant: '',
lang: '',
stages: [{
percent: -25,
color: 'red',
text: 'Delete',
confirm: true,
action: function (event, inst) {
$scope.$apply(function () {
$scope.todo.splice(event.index, 1);
});
return false;
}
}, {
percent: 25,
color: 'green',
text: 'Update',
action: function (event, inst) {
$scope.$apply(function () {
$scope.todo[event.index].time = formatDate('DD d hh:ii:ss A', new Date());
});
}
}]
};
$scope.addNew = function () {
mobiscroll.prompt({
title: 'New item',
message: 'Enter a description and add it to the list of existing tasks.',
placeholder: 'What to do next...',
callback: function (value) {
if (value !== null) {
$scope.$apply(function () {
$scope.todo.push({ text: value ? value : 'New item', time: formatDate('DD d hh:ii:ss A', new Date()) });
});
mobiscroll.toast({
message: 'New item added'
});
}
}
});
};
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form="formSettings">
<ul mobiscroll-listview="listviewSettings" mobiscroll-data="todo" class="mbsc-cloak">
<li>{{item.text}}
<div class="md-timestamp mbsc-italic">{{item.time}}</div>
</li>
</ul>
<div class="mbsc-btn-group-block">
<button mbsc-button ng-click="addNew()">Add new item</div>
</div>
</div>
</div>
Listview - Remove/Undo
angular
.module('demoApp', ['mobiscroll-listview'])
.controller('demoController', ['$scope', function ($scope) {
$scope.data = [{
color: '4c66a4',
mono: 'F',
date: 'Nov 4',
name: 'Facebook',
subj: 'Your weekly page update'
}, {
color: '287BBC',
mono: 'L',
date: 'Nov 1',
name: 'LinkedIn',
subj: 'Michael has endorsed you!'
}, {
color: '5185a8',
mono: 'M',
date: 'Oct 31',
name: 'Mobiscroll',
subj: 'October update'
}, {
color: '1a3665',
mono: 'P',
date: 'Oct 31',
name: 'PayPal',
subj: 'Stay fashionable in the cold with PayPal'
}, {
color: 'dd4b39',
mono: 'G',
date: 'Oct 28',
name: 'Google+',
subj: 'John Doe added you back on Google+'
}, {
color: '5185a8',
mono: 'M',
date: 'Oct 27',
name: 'Mobiscroll',
subj: 'Password reset information'
}];
$scope.settings = {
theme: '',
themeVariant: '',
lang: '',
stages: [{
percent: -30,
action: remove,
undo: true
}, {
percent: 30,
action: remove,
undo: true
}]
};
function remove(event, inst) {
$scope.$apply(function () {
$scope.data.splice(event.index, 1);
});
return false;
}
}]);
<div ng-app="demoApp" ng-controller="demoController">
<ul mobiscroll-listview="settings" mobiscroll-data="data" class="md-mailbox mbsc-cloak">
<li>
<div class="md-mail-icon" style="background:#{{item.color}};">{{item.mono}}</div>
<div class="md-mail-date">{{item.date}}</div>
<div class="md-mail-from">{{item.name}}</div>
<div class="md-mail-subject">{{item.subj}}</div>
</li>
</ul>
</div>
.md-mailbox .mbsc-lv-item {
line-height: 20px;
padding: 10px 10px 10px 60px;
}
.md-mail-icon {
width: 40px;
line-height: 40px;
position: absolute;
top: 10px;
left: 10px;
color: #fff;
text-align: center;
text-shadow: none;
}
.md-mail-date {
position: absolute;
top: 10px;
right: 10px;
font-size: 12px;
}
.md-mail-from {
font-size: 14px;
}
.md-mail-subject {
font-size: 12px;
}
.md-mail-empty {
padding: 10px;
}
Listview - Swipe actions
angular
.module('demoApp', ['mobiscroll-form', 'mobiscroll-listview'])
.controller('demoController', ['$scope', function ($scope) {
$scope.listImages = [
{ name: 'Image 1' },
{ name: 'Image 2' },
{ name: 'Image 3' },
{ name: 'Image 4' },
{ name: 'Image 5' }
];
$scope.menuImages = [
{ name: 'My Image 1' },
{ name: 'My Image 2' },
{ name: 'My Image 3' },
{ name: 'My Image 4' },
{ name: 'My Image 5' }
];
$scope.listSettings = {
//settings,
enhance: true,
stages: [{
percent: 25,
icon: 'link',
text: 'Get link',
action: function (event, inst) {
mobiscroll.toast({
message: 'Link copied'
});
}
}, {
percent: 50,
icon: 'download',
text: 'Download',
action: function (event, inst) {
mobiscroll.toast({
message: 'Downloaded'
});
}
}, {
percent: -25,
icon: 'print',
text: 'Print',
action: function (event, inst) {
mobiscroll.toast({
message: 'Printing...'
});
}
},
{
percent: -50,
icon: 'remove',
text: 'Delete',
confirm: true,
action: function (event, inst) {
$scope.$apply(function () {
$scope.listImages.splice(event.index, 1);
});
}
}
]
}
$scope.menuSettings = {
//settings,
enhance: true,
actions: [{
icon: 'link',
action: function (event, inst) {
mobiscroll.toast({
message: 'Linked'
});
}
}, {
icon: 'star3',
action: function (event, inst) {
mobiscroll.toast({
message: 'Starred'
});
}
}, {
icon: 'download',
action: function (event, inst) {
mobiscroll.toast({
message: 'Downloaded'
});
}
}, {
icon: 'print',
action: function (event, inst) {
mobiscroll.toast({
message: 'Printing...'
});
}
}, {
icon: 'remove',
undo: true,
action: function (event, inst) {
$scope.$apply(function () {
$scope.menuImages.splice(event.index, 1);
});
}
}]
}
$scope.formSettings = {
lang: '',
theme: '',
themeVariant: ''
};
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form="formSettings">
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Action list</div>
<ul mobiscroll-listview="listSettings" mobiscroll-data="listImages" class="mbsc-cloak">
<li data-icon="image2">{{item.name}}</li>
</ul>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Action menu</div>
<ul mobiscroll-listview="menuSettings" mobiscroll-data="menuImages" class="mbsc-cloak">
<li data-icon="image2">{{item.name}}</li>
</ul>
</div>
</div>
</div>
Listview - Hierarchy
mobiscroll.settings = {
lang: '',
theme: '',
themeVariant: ''
};
angular
.module('demoApp', ['mobiscroll-form', 'mobiscroll-listview', 'mobiscroll-cards'])
.controller('demoController', ['$scope', function ($scope) {
$scope.data = [{
cl: 'md-continent micons icon-north-america',
name: 'North America',
children: [{
imgsrc: 'US.png',
name: 'USA',
children: [{
name: 'Washington'
}, {
name: 'Florida'
}, {
name: 'Los Angeles'
}, {
name: 'New York'
}, {
name: 'Detroit'
}, {
name: 'Chicago'
}]
}, {
imgsrc: 'CA.png',
name: 'Canada',
children: [{
name: 'Vancouver'
}, {
name: 'Winnipeg'
}, {
name: 'Calgary'
}, {
name: 'Montreal'
}, {
name: 'Quebec'
}]
}]
}, {
cl: 'md-continent micons icon-south-america',
name: 'South America',
children: [{
imgsrc: 'ar.png',
name: 'Argentina',
children: [{
name: 'Buenos Aire'
}, {
name: 'Córdoba'
}, {
name: 'Rosario'
}, {
name: 'Mendoza'
}]
}, {
imgsrc: 'br.png',
name: 'Brazil',
children: [{
name: 'Rio de Janeiro'
}, {
name: 'Sao Paolo'
}, {
name: 'Brasília'
}, {
name: 'Salvador'
}, {
name: 'Fortaleza'
}]
}, {
imgsrc: 'cl.png',
name: 'Chile',
children: [{
name: 'Santiago'
}, {
name: 'Concepción'
}, {
name: 'Valparaíso'
}]
}]
} // Showing partial data. Download full source.
];
$scope.settings = {
swipe: false,
enhance: true
};
$scope.insideCardSettings = {
swipe: false,
enhance: true
};
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Hierarchical listview</div>
<ul mobiscroll-listview="settings" mobiscroll-data="data" class="mbsc-cloak">
<li>
<img ng-if="item.imgsrc" ng-src="https://img.mobiscroll.com/demos/flags/{{item.imgsrc}}" />
<span class="{{item.cl}}"> </span> {{item.name}}
</li>
</ul>
</div>
<div class="mbsc-padding">The listview can also be rendered inside a card</div>
<mobiscroll-card>
<ul mobiscroll-listview="insideCardSettings" mobiscroll-data="data" class="mbsc-cloak">
<li>
<img ng-if="item.imgsrc" ng-src="https://img.mobiscroll.com/demos/flags/{{item.imgsrc}}" />
<span class="{{item.cl}}"> </span> {{item.name}}
</li>
</ul>
</mobiscroll-card>
</div>
</div>
.md-country .mbsc-lv-img {
margin-top: -.6em;
width: 2em;
}
.md-continent {
font-size: 36px;
position: absolute;
height: 1em;
width: 1em;
top: 50%;
margin-top: -.5em;
left: .42em;
text-align: center;
}
Listview - Checklist
angular
.module('demoApp', ['mobiscroll-listview'])
.controller('demoController', ['$scope', function ($scope) {
$scope.data = [{
check: true,
todo: 'Do the laundry'
}, {
todo: 'Check out new Mobiscroll features'
}, {
check: true,
todo: "Don't forget mom's birthday!"
}, {
todo: 'Update my app with the latest Mobiscroll'
}, {
todo: 'Buy new shoes'
}, {
todo: 'Need ketchup for pizza'
}];
$scope.settings = {
theme: '',
themeVariant: '',
lang: '',
sortable: {
handle: 'left'
},
stages: {
left: [{
key: 'stage1',
icon: 'plus',
color: '#31c6e7',
text: 'Add',
action: function (event, inst) {
$scope.$apply(function () {
$scope.data.splice(event.index + 1, 0, {
todo: 'New Todo'
});
});
}
}],
right: [{
key: 'stage2',
color: '#009688',
text: 'Remove',
icon: 'remove',
action: function (event, inst) {
$scope.$apply(function () {
$scope.data.splice(event.index, 1);
});
return false;
}
}]
}
};
}]);
<div ng-app="demoApp" ng-controller="demoController">
<ul mobiscroll-listview="settings" class="mbsc-cloak" mobiscroll-data="data" mbsc-enhance>
<li><input mbsc-checkbox type="checkbox" ng-checked="item.check" />{{item.todo}}</li>
</ul>
</div>
Listview - Filtering
angular
.module('demoApp', ['mobiscroll-form', 'mobiscroll-listview', 'mobiscroll-range'])
.controller('demoController', ['$scope', function ($scope) {
var i,
tempTime,
now = new Date(),
lastDayOfWeek = new Date(now.getFullYear(), now.getMonth(), now.getDate() + (7 - now.getDay()), 23, 59, 59, 999);
$scope.filters = {
value: 'today',
call: true,
meeting: true,
customRange: [new Date(now.getFullYear(), now.getMonth(), now.getDate()), new Date(now.getFullYear(), now.getMonth(), now.getDate() + 6)]
};
$scope.filterItems = function (data) {
if (!$scope.filters.call && data.type == 'call' || !$scope.filters.meeting && data.type == 'meeting') {
return false;
}
if ($scope.filters.value == 'today') {
if (data.time.getMonth() == now.getMonth() && data.time.getDate() == now.getDate()) {
return true;
}
} else if ($scope.filters.value == 'week') {
if (now <= data.time && data.time <= lastDayOfWeek) {
return true;
}
} else {
if ($scope.filters.customRange[0] <= data.time && data.time < $scope.filters.customRange[1]) {
return true;
}
}
return false;
};
$scope.data = [{
name: "Owen Adams",
company: "Sunholdings Corp.",
icon: "phone",
type: "call"
}, {
name: "Kian Phillips",
company: "sol-flex Corp.",
icon: "location",
type: "meeting"
}, {
name: "Robert Bradley",
company: "Silvermedia",
icon: "location",
type: "meeting"
}, {
name: "Lydia Young",
company: "Zimplex",
icon: "phone",
type: "call"
}, {
name: "Hollie Hudson",
company: "Stanelectrics",
icon: "location",
type: "meeting"
}, {
name: "Lynn Elliott",
company: "Techhex",
icon: "location",
type: "meeting"
}, {
name: "Konner Murray",
company: "HACME Corp.",
icon: "phone",
type: "call"
}, {
name: "Morgan Downs",
company: "Itex Corp.",
icon: "location",
type: "meeting"
}, {
name: "Warren Boone",
company: "Sumline",
icon: "location",
type: "meeting"
}, {
name: "Charlie Jenkins",
company: "Quaddoex",
icon: "phone",
type: "call"
}, {
name: "Jillian Hobbs",
company: "Indizap",
icon: "location",
type: "meeting"
}, {
name: "Donald Mccormick",
company: "Zootrax",
icon: "phone",
type: "call"
}, {
name: "Luke Harper",
company: "Unihouse",
icon: "phone",
type: "call"
}, {
name: "Leah West",
company: "Ap-care",
icon: "phone",
type: "call"
}, {
name: "Billie Rivas",
company: "Technoit Corp.",
icon: "location",
type: "meeting"
}, {
name: "Janae Diaz",
company: "Plex-ron Corp.",
icon: "location",
type: "meeting"
}, {
name: "Raquel Bentley",
company: "Silicon-lax",
icon: "phone",
type: "call"
}, {
name: "Harley Burke",
company: "Lamzone",
icon: "location",
type: "meeting"
}];
$scope.formSettings = {
theme: '',
themeVariant: ''
};
$scope.listviewSettings = {
lang: '',
theme: '',
themeVariant: '',
enhance: true,
swipe: false,
striped: true
};
$scope.rangeSettings = {
lang: '',
theme: '',
themeVariant: ''
};
for (i = 0; i < $scope.data.length; ++i) {
tempTime = new Date(now.getFullYear(), now.getMonth(), now.getDate() + (i > 5 ? (i - 5) : 0), now.getHours() + i * 2, Math.round((now.getMinutes() + i * 5) / 5) * 5);
$scope.data[i].time = tempTime;
$scope.data[i].formatedTime = mobiscroll.util.datetime.formatDate('D d hh:ii', tempTime);
}
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form="formSettings" class="md-schedule mbsc-cloak">
<div class="mbsc-form-group">
<label>
Today
<input mbsc-segmented type="radio" class="md-schedule-range" ng-model="filters.value" value="today" name="range">
</label>
<label>
This Week
<input mbsc-segmented type="radio" class="md-schedule-range" ng-model="filters.value" value="week" name="range">
</label>
<label>
Custom
<input mbsc-segmented type="radio" class="md-schedule-range" ng-model="filters.value" value="custom" name="range" ng-click="range.show()">
</label>
<div class="md-custom-range" ng-model="filters.customRange" mobiscroll-instance="range" mobiscroll-range="rangeSettings" /></div>
<label>
Show Calls
<input mbsc-switch ng-model="filters.call" type="checkbox" mobiscroll-switch>
</label>
<label>
Show Meetings
<input mbsc-switch ng-model="filters.meeting" type="checkbox" mobiscroll-switch>
</label>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">My Schedule</div>
<div class="mbsc-empty" ng-if="(data | filter:filterItems).length == 0">
<h3>Nothing scheduled</h3>
</div>
<ul mobiscroll-listview="listviewSettings" mobiscroll-data="data | filter:filterItems">
<li data-icon="{{ item.icon }}">
<h4>{{ item.name }}</h4>
<h4>{{ item.company }}</h4>
<span class="md-time" style="position:absolute;right:1.25em;top:50%;margin-top:-9px;">{{ item.formatedTime }}</span>
</li>
</ul>
</div>
</div>
</div>
Listview - Data sources
mobiscroll.settings = {
lang: '',
theme: '',
themeVariant: ''
};
angular
.module('demoApp', ['mobiscroll-listview', 'mobiscroll-form'])
.controller('demoController', ['$scope', function ($scope) {
$scope.data = [
{ id: 1, title: 'Django Unchained (2012)' },
{ id: 2, title: 'WALL·E (2008)' },
{ id: 3, title: 'Princess Mononoke (1997)' },
{ id: 4, title: 'American Beauty (1999)' },
{ id: 5, title: 'The Dark Knight Rises (2012)' }
];
mobiscroll.util.getJson('https://trial.mobiscroll.com/getmovies/?nr=5', function (data) {
var i, item, movies = [];
for (i = 0; i < data.length; ++i) {
item = data[i];
movies.push({
id: item.id,
title: item.title
});
}
$scope.$apply(function () {
$scope.remoteData = movies;
});
}, 'jsonp');
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Data array</div>
<ul mobiscroll-listview mobiscroll-data="data" class="mbsc-cloak">
<li>{{item.title}}</li>
</ul>
</div>
<div class="mbsc-form-group">
<div class="mbsc-form-group-title">Remote data</div>
<ul mobiscroll-listview mobiscroll-data="remoteData" class="mbsc-cloak">
<li>{{item.title}}</li>
</ul>
</div>
</div>
</div>
Listview - Load on demand
angular
.module('demoApp', ['mobiscroll-listview'])
.controller('demoController', ['$scope', '$sce', function ($scope, $sce) {
var isLoading = false,
feedNum = 5;
function jsonp(url, callback) {
var callbackName = 'jsonp_callback_' + Math.round(100000 * Math.random());
window[callbackName] = function (data) {
delete window[callbackName];
document.body.removeChild(script);
callback(data);
};
var script = document.createElement('script');
script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + callbackName;
document.body.appendChild(script);
}
function getFeed() {
var i, entry, img, content, text, li;
if ($scope.listview) {
$scope.listview.showLoading();
}
jsonp('https://api.rss2json.com/v1/api.json?rss_url=http%3A%2F%2Ffeeds.arstechnica.com%2Farstechnica%2Ftechnology-lab%2F&api_key=ytdlqir4cx7dpdb9asyawz4lteioxq5uwl5ctd9n&count=' + feedNum, function (result) {
if (result.status == 'ok') {
for (i = feedNum - 5; i < result.items.length; i++) {
entry = result.items[i];
img = entry.thumbnail ? entry.content.match(/src="[^\"]*/)[0].replace('src="', '') : '';
content = /\<p\>(.*)(\.\s)/.exec(entry.content);
text = content ? content[1] : '';
$scope.$apply(function () {
$scope.data.push({
title: entry.title,
link: entry.link,
image: img,
text: $sce.trustAsHtml(text + ' ...'),
author: entry.author
});
});
}
isLoading = false;
$scope.listview.hideLoading();
}
});
}
$scope.showIcon = false;
$scope.data = [{
header: true,
headerTitle: 'Arstechnica News'
}];
$scope.settings = {
theme: '',
themeVariant: '',
lang: '',
striped: true,
animateAddRemove: false,
swipe: false,
onListEnd: function (event, inst) {
if (!isLoading) {
isLoading = true;
feedNum += 5;
getFeed();
}
}
};
getFeed();
}]);
<div ng-app="demoApp" ng-controller="demoController">
<ul id="demo" mobiscroll-listview="settings" mobiscroll-data="data" mobiscroll-instance="listview" class="md-news mbsc-cloak" mbsc-enhance>
<li data-role="{{ item.header ? 'list-divider' : '' }}">
<div ng-if="item.header">{{item.headerTitle}}</div>
<div ng-if="!item.header">
<div>
<h4>{{item.title}}</h4>
<a href="{{item.link}}" target="_blank"><img src="{{item.image}}"></a>
<p class="md-text">
<span ng-bind-html="item.text">...</span>
<a href="{{item.link}}" target="_blank"> Read more →</a>
</p>
<div class="md-text md-author"> by <a href="">{{item.author}}</a></div>
</div>
</div>
</li>
</ul>
</div>
.md-news .mbsc-lv-item img {
width: 100%;
}
.md-news .mbsc-lv-item h4 {
margin-top: 0;
font-weight: 100;
}
.md-news .mbsc-lv-item .md-author {
margin-top: 0;
text-align: right;
font-size: 14px;
font-style: italic;
}
Listview - Load more
angular
.module('demoApp', ['mobiscroll-listview', 'mobiscroll-form'])
.controller('demoController', ['$scope', function ($scope) {
$scope.showMore = true;
$scope.getMovies = function () {
$scope.showMore = false;
if ($scope.list) {
$scope.list.showLoading();
}
mobiscroll.util.getJson('https://trial.mobiscroll.com/loadmore/?length=' + ($scope.data.length + 9), function (data) {
var i, item;
for (i = 0; i < data.length; ++i) {
item = data[i];
$scope.$apply(function () {
$scope.data.push({
id: item.id,
title: item.title
});
});
}
$scope.showMore = true;
$scope.list.hideLoading();
if ($scope.data.length >= 100) {
$scope.showMore = false;
}
}, 'jsonp');
}
$scope.data = [{
header: true,
headerTitle: 'Top Rated Movies'
}];
$scope.settings = {
theme: '',
themeVariant: '',
lang: '',
animateAddRemove: false,
striped: true,
swipe: false
};
$scope.formSettings = {
theme: '',
themeVariant: '',
lang: ''
};
$scope.getMovies();
}]);
<div ng-app="demoApp" ng-controller="demoController">
<ul mobiscroll-listview="settings" mobiscroll-data="data" class="mbsc-cloak" mbsc-enhance mobiscroll-instance="list">
<li data-role="{{ item.header ? 'list-divider' : '' }}">
<div ng-if="item.header">{{item.headerTitle}}</div>
<div ng-if="!item.header">{{item.title}}</div>
</li>
</ul>
<div mobiscroll-form="formSettings" class="mbsc-padding">
<button mbsc-button class="mbsc-btn-block" ng-show="showMore" ng-click="getMovies()">Load more</button>
</div>
</div>
Listview - Master-detail view
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.
mobiscroll.settings = {
lang: '',
theme: '',
themeVariant: ''
};
angular
.module('demoApp', ['mobiscroll-listview', 'mobiscroll-form', 'mobiscroll-navigation', 'mobiscroll-cards'])
.controller('demoController', ['$scope', function ($scope) {
$scope.selectedTab = 'profile';
$scope.selectedUser = null;
$scope.setUser = function (newIndex) {
$scope.selectedUser = $scope.data[newIndex];
$scope.updateInputs();
}
$scope.formatDate = function (date) {
return mobiscroll.util.datetime.formatDate('D, d h:ii A', new Date(date));
}
$scope.getData = function () {
mobiscroll.util.getJson('https://trial.mobiscroll.com/master-detail/', function (data) {
$scope.$apply(function () {
$scope.data = data;
$scope.selectedUser = data[0];
});
$scope.updateInputs();
}, 'jsonp');
}
$scope.updateInputs = function () {
var inputs = document.getElementsByClassName('md-profile-data');
var event = new Event('change');
inputs[1].dispatchEvent(event);
for (var i = 0; i < inputs.length; i++) {
inputs[i].dispatchEvent(event);
}
}
$scope.people = [
{ id: 0, name: 'Ashlee Conner', selected: true },
{ id: 1, name: 'Bianca Baker', selected: false },
{ id: 2, name: 'Christopher Tran', selected: false },
{ id: 3, name: 'Konner Stone', selected: false },
{ id: 4, name: 'Leon Medina', selected: false },
{ id: 5, name: 'Nora Leonard', selected: false },
{ id: 6, name: 'Octavio Daniels', selected: false },
{ id: 7, name: 'Russell Wang', selected: false },
{ id: 8, name: 'Teresa Livingston', selected: false },
{ id: 9, name: 'Zoe Gilbert', selected: false }
];
$scope.navSettings = {
display: 'inline'
};
$scope.listSettings = {
select: 'single'
};
$scope.getData();
}]);
<div ng-app="demoApp" ng-controller="demoController">
<div mobiscroll-form class="md-master-detail-demo">
<div class="mbsc-grid mbsc-no-padding">
<div class="mbsc-row">
<div class="mbsc-col-12 mbsc-col-md-2 mbsc-col-sm-3">
<ul mobiscroll-listview="listSettings" mobiscroll-data="people" class="mbsc-cloak">
<li data-selected="{{item.selected}}" ng-click="setUser($index)">{{item.name}}</li>
</ul>
</div>
<div class="mbsc-col-12 mbsc-col-md-10 mbsc-col-sm-9 md-col-border">
<ul mobiscroll-tab-nav="navSettings" class="mbsc-cloak">
<li data-selected="true" ng-click="selectedTab = 'profile'">Profile</li>
<li ng-click="selectedTab = 'conv'">Conversations</li>
<li ng-click="selectedTab = 'tasks'">Tasks</li>
</ul>
<div ng-if="selectedUser && selectedTab == 'profile'" class="mbsc-form-grid">
<mobiscroll-card>
<mobiscroll-card-content>
<div class="mbsc-row">
<div class="mbsc-col-md-6 mbsc-col-12">
<label>
First name
<input mbsc-input class="md-profile-data" ng-model="selectedUser.first" data-input-style="box" data-label-style="floating" />
</label>
</div>
<div class="mbsc-col-md-6 mbsc-col-12">
<label>
Last name
<input mbsc-input class="md-profile-data" ng-model="selectedUser.last" data-input-style="box" data-label-style="floating" />
</label>
</div>
</div>
<div class="mbsc-row">
<div class="mbsc-col-md-6 mbsc-col-12">
<label>
Email
<input mbsc-input class="md-profile-data" ng-model="selectedUser.email" data-input-style="box" data-label-style="floating" />
</label>
</div>
</div>
<div class="mbsc-row">
<div class="mbsc-col-md-6 mbsc-col-12">
<label>
Company
<input mbsc-input class="md-profile-data" ng-model="selectedUser.company" data-input-style="box" data-label-style="floating" />
</label>
</div>
<div class="mbsc-col-md-6 mbsc-col-12">
<label>
Role
<select ng-model="selectedUser.role" mbsc-dropdown data-input-style="box" data-label-style="floating">
<option value="ceo">CEO</option>
<option value="cto">CTO</option>
<option value="vpp">VP of Product</option>
<option value="vpm">VP of Marketing</option>
<option value="vpe">VP of Engineering</option>
</select>
</label>
</div>
</div>
<div class="mbsc-row">
<div class="mbsc-col-md-6 mbsc-col-12">
<label>
Notes
<textarea mbsc-textarea class="md-profile-data" data-input-style="box" data-label-style="floating" ng-model="selectedUser.notes"></textarea>
</label>
</div>
</div>
<div class="mbsc-row mbsc-justify-content-end">
<div class="mbsc-col-md-6 mbsc-col-12">
<div class="mbsc-pull-right mbsc-btn-group">
<button mbsc-button class="mbsc-btn-primary">Update</button>
<button mbsc-button class="mbsc-btn-secondary">Email</button>
<button mbsc-button class="mbsc-btn-secondary">Call</button>
<button mbsc-button class="mbsc-btn-secondary">Meet</button>
</div>
</div>
</div>
</mobiscroll-card-content>
</mobiscroll-card>
</div>
<div ng-if="selectedUser && selectedTab == 'conv'" class="mbsc-form-grid">
<div ng-repeat="conv in selectedUser.conv">
<mobiscroll-card data-collapsible data-open>
<mobiscroll-card-header>
<span class="mbsc-bold">{{conv.title}}</span>
<span class="mbsc-pull-right mbsc-card-subtitle">{{formatDate(conv.date)}}</span>
</mobiscroll-card-header>
<mobiscroll-card-content>{{conv.text}}</mobiscroll-card-content>
</mobiscroll-card>
</div>
</div>
<div ng-if="selectedUser && selectedTab == 'tasks'" class="mbsc-form-grid">
<mobiscroll-card>
<mobiscroll-card-header>
<h2 class="mbsc-card-title">Qualification process with lead</h2>
</mobiscroll-card-header>
<mobiscroll-card-content class="mbsc-no-padding">
<label>
Understanding business problem we can fix.
<input mbsc-checkbox type="checkbox" ng-model="selectedUser.tasks[0]">
</label>
<label>
How are they solving the problem at the moment?
<input mbsc-checkbox type="checkbox" ng-model="selectedUser.tasks[1]">
</label>
<label>
Do you have a budget allocated to solve this problem?
<input mbsc-checkbox type="checkbox" ng-model="selectedUser.tasks[2]">
</label>
<label>
Understanding the budget signoff process.
<input mbsc-checkbox type="checkbox" ng-model="selectedUser.tasks[3]">
</label>
<label>
What other solutions are you evaluating?
<input mbsc-checkbox type="checkbox" ng-model="selectedUser.tasks[4]">
</label>
<label>
What does success look like?
<input mbsc-checkbox type="checkbox" ng-model="selectedUser.tasks[5]">
</label>
<label>
What does solving the problem mean to you personally?
<input mbsc-checkbox type="checkbox" ng-model="selectedUser.tasks[6]">
</label>
<label>
What's the deadline?
<input mbsc-checkbox type="checkbox" ng-model="selectedUser.tasks[7]">
</label>
</mobiscroll-card-content>
</mobiscroll-card>
</div>
</div>
</div>
</div>
</div>
</div>
.md-master-detail-demo,
.md-master-detail-demo .mbsc-row {
height: 100%;
}
.md-master-detail-demo .mbsc-grid {
height: 100%;
}
.md-master-detail-demo .md-col-border {
overflow: auto;
height: 100%;
min-height: 800px;
border-left: 1px solid #ccc;
}
.md-master-detail-demo .mbsc-ms-c {
border-top: 0;
}
.md-master-tab,
.md-master-item {
display: none;
}
.md-master-tab-sel,
.md-master-item-sel {
display: block;
}
Listview - Event handlers
EVENTS FIRED:
angular
.module('demoApp', ['mobiscroll-listview'])
.controller('demoController', ['$scope', function ($scope) {
var ids = 15;
$scope.data = [{
id: 1,
title: 'Work order #0001',
status: 'Assigned'
}, {
id: 2,
title: 'Work order #0002',
status: 'Assigned'
}, {
id: 3,
title: 'Work order #0003',
status: 'Assigned'
}, {
id: 4,
title: 'Work order #0004',
status: 'Assigned'
}, {
id: 5,
title: 'Work order #0005',
status: 'Assigned'
}, {
id: 6,
title: 'Work order #0006',
status: 'Assigned'
}, {
id: 7,
title: 'Work order #0007',
status: 'Assigned'
}, {
id: 8,
title: 'Work order #0008',
status: 'Assigned'
}, {
id: 9,
title: 'Work order #0009',
status: 'Assigned'
}, {
id: 10,
title: 'Work order #0010',
status: 'Assigned'
}, {
id: 11,
title: 'Work order #0011',
status: 'Assigned'
}, {
id: 12,
title: 'Work order #0012',
status: 'Assigned'
}, {
id: 13,
title: 'Work order #0013',
status: 'Assigned'
}, {
id: 14,
title: 'Work order #0014',
status: 'Assigned'
}, {
id: 15,
title: 'Work order #0015',
status: 'Assigned'
}];
$scope.settings = {
theme: '',
themeVariant: '',
lang: '',
sortable: { handle: 'left' },
iconSlide: true,
striped: true,
stages: [{
percent: 25,
color: 'crimson',
icon: 'checkmark',
text: 'Complete',
action: function (event, inst) {
$scope.$apply(function () {
$scope.data[event.index].status = 'Completed';
});
}
}, {
percent: -50,
color: 'red',
icon: 'remove',
text: 'Delete',
confirm: true,
action: function (event, inst) {
$scope.$apply(function () {
$scope.data.splice(event.index, 1);
});
return false;
}
}, {
percent: 50,
color: 'green',
icon: 'plus',
text: 'Spawn',
action: function (event, inst) {
$scope.$apply(function () {
ids += 1;
$scope.data.splice(event.index + 1, 0, {
id: ids,
title: 'Work order #000' + ids + ' created from WO #000' + $scope.data[event.index].id,
status: 'Assigned'
});
});
}
}, {
percent: -25,
color: 'olive',
icon: 'clock',
text: 'Pending',
action: function (event, inst) {
$scope.$apply(function () {
$scope.data[event.index].status = 'Pending';
});
}
}],
onItemAdd: function () {
// Your custom event handler goes here
},
onItemRemove: function () {
// Your custom event handler goes here
},
onInit: function (event, inst) {
// Your custom event handler goes here
},
onItemTap: function (event, inst) {
// Your custom event handler goes here
},
onNavEnd: function (event, inst) {
// Your custom event handler goes here
},
onNavStart: function (event, inst) {
// Your custom event handler goes here
},
onSlideEnd: function (event, inst) {
// Your custom event handler goes here
},
onSlideStart: function (event, inst) {
// Your custom event handler goes here
},
onSort: function (event, inst) {
// Your custom event handler goes here
},
onSortChange: function (event, inst) {
// Your custom event handler goes here
},
onSortEnd: function (event, inst) {
// Your custom event handler goes here
},
onSortStart: function (event, inst) {
// Your custom event handler goes here
},
onSortUpdate: function (event, inst) {
// Your custom event handler goes here
},
onStageChange: function (event, inst) {
// Your custom event handler goes here
},
onListEnd: function (event, inst) {
// Your custom event handler goes here
}
};
}]);
<div ng-app="demoApp" ng-controller="demoController">
<ul mobiscroll-listview="settings" mobiscroll-data="data" class="mbsc-cloak">
<li data-id="{{item.id}}">{{item.title}}
<div>{{item.status}}</div>
</li>
</ul>
</div>
Listview - Quick Navigation
angular
.module('demoApp', ['mobiscroll-listview', 'mobiscroll-optionlist'])
.controller('demoController', ['$scope', function ($scope) {
var timer,
firstletter,
listview,
currSelected = "A",
start = new Date(),
isScrolled = false,
isFavorite = false,
preventScroll = 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) {
$scope.menustrip.navigate(document.querySelector('.md-item-' + firstletter), true);
}
currSelected = firstletter;
start = new Date();
isScrolled = false;
}
preventScroll = false;
}
$scope.data = [{
"location": "Abilene, TEXAS)",
"iata": "(ABI)",
"startLetter": "A"
}, {
"location": "Agana / Tamuning, GUAM",
"iata": "(GUM)",
"startLetter": "A"
}, {
"location": "Aguadilla, PUERTO RICO",
"iata": "(BQN)",
"startLetter": "A"
}, {
"location": "Akron / Canton, OHIO",
"iata": "(CAK)",
"startLetter": "A"
}, {
"location": "Albany, GEORGIA",
"iata": "(ABY)",
"startLetter": "A"
}, {
"location": "Albany, NEW YORK",
"iata": "(ALB)",
"startLetter": "A"
}, {
"location": "Albuquerque, NEW MEXICO",
"iata": "(ABQ)",
"startLetter": "A"
}, {
"location": "Alexandria, LOUISIANA",
"iata": "(AEX)",
"startLetter": "A"
}, {
"location": "Allentown, PENNSYLVANIA",
"iata": "(ABE)",
"startLetter": "A"
}, {
"location": "Alpena, MICHIGAN",
"iata": "(APN)",
"startLetter": "A"
}, {
"location": "Amarillo, TEXAS",
"iata": "(AMA)",
"startLetter": "A"
}, {
"location": "Appleton, WISCONSIN",
"iata": "(ATW)",
"startLetter": "A"
}, {
"location": "Arcata / Eureka, CALIFORNIA",
"iata": "(ACV)",
"startLetter": "A"
}, {
"location": "Asheville, NORTH CAROLINA",
"iata": "(AVL)",
"startLetter": "A"
}, {
"location": "Aspen, COLORADO",
"iata": "(ASE)",
"startLetter": "A"
}, {
"location": "Atlanta, GEORGIA",
"iata": "(ATL)",
"startLetter": "A"
}, {
"location": "Atlantic City, NEW JERSEY",
"iata": "(ACY)",
"startLetter": "A"
}, {
"location": "Augusta, GEORGIA",
"iata": "(AGS)",
"startLetter": "A"
}, {
"location": "Austin, TEXAS",
"iata": "(AUS)",
"startLetter": "A"
}, {
"location": "Baltimore / Glen Burnie, MARYLAND",
"iata": "(BWI)",
"startLetter": "B"
}, {
"location": "Bangor, MAINE",
"iata": "(BGR)",
"startLetter": "B"
}, {
"location": "Bar Harbor, MAINE",
"iata": "(BHB)",
"startLetter": "B"
}, {
"location": "Baton Rouge, LOUISIANA",
"iata": "(BTR)",
"startLetter": "B"
}, {
"location": "Beaumont / Port Arthur, TEXAS",
"iata": "(BPT)",
"startLetter": "B"
}, {
"location": "Belleville, ILLINOIS",
"iata": "(BLV)",
"startLetter": "B"
}, {
"location": "Bellingham, WASHINGTON",
"iata": "(BLI)",
"startLetter": "B"
}, {
"location": "Bemidji, MINNESOTA",
"iata": "(BJI)",
"startLetter": "B"
}, {
"location": "Billings, MONTANA",
"iata": "(BIL)",
"startLetter": "B"
}, {
"location": "Binghamton, NEW YORK",
"iata": "(BGM)",
"startLetter": "B"
}, {
"location": "Birmingham, ALABAMA",
"iata": "(BHM)",
"startLetter": "B"
}, {
"location": "Bismarck, NORTH DAKOTA",
"iata": "(BIS)",
"startLetter": "B"
}, {
"location": "Bloomington / Normal, ILLINOIS",
"iata": "(BMI)",
"startLetter": "B"
}, {
"location": "Boise, IDAHO",
"iata": "(BOI)",
"startLetter": "B"
}, {
"location": "Boston, MASSACHUSETTS",
"iata": "(BOS)",
"startLetter": "B"
}, {
"location": "Boulder City, NEVADA",
"iata": "(BLD)",
"startLetter": "B"
}, {
"location": "Bozeman, MONTANA",
"iata": "(BZN)",
"startLetter": "B"
}, {
"location": "Brainerd, MINNESOTA",
"iata": "(BRD)",
"startLetter": "B"
}, {
"location": "Bristol / Johnson City / Kingsport, TENNESSEE",
"iata": "(TRI)",
"startLetter": "B"
}, {
"location": "Brownsville, TEXAS",
"iata": "(BRO)",
"startLetter": "B"
}, {
"location": "Brunswick, GEORGIA",
"iata": "(BQK)",
"startLetter": "B"
}, {
"location": "Buffalo, NEW YORK",
"iata": "(BUF)",
"startLetter": "B"
}, {
"location": "Bullhead City, ARIZONA",
"iata": "(IFP)",
"startLetter": "B"
}, {
"location": "Burbank, CALIFORNIA",
"iata": "(BUR)",
"startLetter": "B"
}, {
"location": "Burlington, VERMONT",
"iata": "(BTV)",
"startLetter": "B"
}, {
"location": "Butte, MONTANA",
"iata": "(BTM)",
"startLetter": "B"
}, {
"location": "Carlsbad, CALIFORNIA",
"iata": "(CLD)",
"startLetter": "C"
}, {
"location": "Casper, WYOMING",
"iata": "(CPR)",
"startLetter": "C"
}, {
"location": "Cedar Rapids, IOWA",
"iata": "(CID)",
"startLetter": "C"
}, {
"location": "Champaign / Urbana, ILLINOIS",
"iata": "(CMI)",
"startLetter": "C"
}, {
"location": "Charleston, WEST VIRGINIA",
"iata": "(CRW)",
"startLetter": "C"
}, {
"location": "Charleston, SOUTH CAROLINA",
"iata": "(CHS)",
"startLetter": "C"
}, {
"location": "Charlevoix, MICHIGAN",
"iata": "(CVX)",
"startLetter": "C"
}, {
"location": "Charlotte, NORTH CAROLINA",
"iata": "(CLT)",
"startLetter": "C"
}, {
"location": "Charlotte Amalie, St. Thomas, U.S. VIRGIN ISLANDS",
"iata": "(STT)",
"startLetter": "C"
}, {
"location": "Charlottesville, VIRGINIA",
"iata": "(CHO)",
"startLetter": "C"
}, {
"location": "Chattanooga, TENNESSEE",
"iata": "(CHA)",
"startLetter": "C"
}, {
"location": "Cheyenne, WYOMING",
"iata": "(CYS)",
"startLetter": "C"
}, {
"location": "Chicago, ILLINOIS",
"iata": "(ORD)",
"startLetter": "C"
}, {
"location": "Chicago, ILLINOIS",
"iata": "(MDW)",
"startLetter": "C"
}, {
"location": "Chico, CALIFORNIA",
"iata": "(CIC)",
"startLetter": "C"
}, {
"location": "Christiansted, St. Croix, U.S. VIRGIN ISLANDS",
"iata": "(STX)",
"startLetter": "C"
}, {
"location": "Clarksburg, WEST VIRGINIA",
"iata": "(CKB)",
"startLetter": "C"
}, {
"location": "Cleveland, OHIO",
"iata": "(CLE)",
"startLetter": "C"
}, {
"location": "Cody, WYOMING",
"iata": "(COD)",
"startLetter": "C"
}, {
"location": "College Station, TEXAS",
"iata": "(CLL)",
"startLetter": "C"
}, {
"location": "Colorado Springs, COLORADO",
"iata": "(COS)",
"startLetter": "C"
}, {
"location": "Columbia, MISSOURI",
"iata": "(COU)",
"startLetter": "C"
}, {
"location": "Columbia, SOUTH CAROLINA",
"iata": "(CAE)",
"startLetter": "C"
}, {
"location": "Columbus, OHIO",
"iata": "(LCK)",
"startLetter": "C"
}, {
"location": "Columbus, OHIO",
"iata": "(CMH)",
"startLetter": "C"
}, {
"location": "Columbus, GEORGIA",
"iata": "(CSG)",
"startLetter": "C"
}, {
"location": "Columbus / West Point / Starkville, MISSISSIPPI",
"iata": "(GTR)",
"startLetter": "C"
}, {
"location": "Corpus Christi / Kingsville, TEXAS",
"iata": "(CRP)",
"startLetter": "C"
}, {
"location": "Covington, KENTUCKY",
"iata": "(CVG)",
"startLetter": "C"
}, {
"location": "Crescent City, CALIFORNIA",
"iata": "(CEC)",
"startLetter": "C"
}, {
"location": "Dallas-Fort Worth, TEXAS",
"iata": "(DFW)",
"startLetter": "D"
}, {
"location": "Dayton, OHIO",
"iata": "(DAY)",
"startLetter": "D"
}, {
"location": "Daytona Beach, FLORIDA",
"iata": "(DAB)",
"startLetter": "D"
}, {
"location": "Del Rio, TEXAS",
"iata": "(DRT)",
"startLetter": "D"
}, {
"location": "Denver, COLORADO",
"iata": "(DEN)",
"startLetter": "D"
}, {
"location": "Des Moines, IOWA",
"iata": "(DSM)",
"startLetter": "D"
}, {
"location": "Detroit / Romulus, MICHIGAN",
"iata": "(DTW)",
"startLetter": "D"
}, {
"location": "Dickinson, NORTH DAKOTA",
"iata": "(DIK)",
"startLetter": "D"
}, {
"location": "Dothan, ALABAMA",
"iata": "(DHN)",
"startLetter": "D"
}, {
"location": "Dubuque, IOWA",
"iata": "(DBQ)",
"startLetter": "D"
}, {
"location": "Duluth, MINNESOTA",
"iata": "(DLH)",
"startLetter": "D"
}, {
"location": "Durango, COLORADO",
"iata": "(DRO)",
"startLetter": "D"
}, {
"location": "Eau Claire, WISCONSIN",
"iata": "(EAU)",
"startLetter": "E"
}, {
"location": "El Paso, TEXAS",
"iata": "(ELP)",
"startLetter": "E"
}, {
"location": "Elko, NEVADA",
"iata": "(EKO)",
"startLetter": "E"
}, {
"location": "Elmira / Corning, NEW YORK",
"iata": "(ELM)",
"startLetter": "E"
}, {
"location": "Erie, PENNSYLVANIA",
"iata": "(ERI)",
"startLetter": "E"
}, {
"location": "Escanaba, MICHIGAN",
"iata": "(ESC)",
"startLetter": "E"
}, {
"location": "Eugene, OREGON",
"iata": "(EUG)",
"startLetter": "E"
}, {
"location": "Evansville, INDIANA",
"iata": "(EVV)",
"startLetter": "E"
}, {
"location": "Farmington, NEW MEXICO",
"iata": "(FMN)",
"startLetter": "F"
}, {
"location": "Fayetteville, NORTH CAROLINA",
"iata": "(FAY)",
"startLetter": "F"
}, {
"location": "Fayetteville, ARKANSAS",
"iata": "(XNA)",
"startLetter": "F"
}, {
"location": "Flagstaff, ARIZONA",
"iata": "(FLG)",
"startLetter": "F"
}, {
"location": "Flint, MICHIGAN",
"iata": "(FNT)",
"startLetter": "F"
}, {
"location": "Florence, SOUTH CAROLINA",
"iata": "(FLO)",
"startLetter": "F"
}, {
"location": "Fort Hood / Killeen / Temple, TEXAS",
"iata": "(GRK)",
"startLetter": "F"
}, {
"location": "Fort Lauderdale, FLORIDA",
"iata": "(FLL)",
"startLetter": "F"
}, {
"location": "Fort Myers, FLORIDA",
"iata": "(RSW)",
"startLetter": "F"
}, {
"location": "Fort Smith, ARKANSAS",
"iata": "(FSM)",
"startLetter": "F"
}, {
"location": "Fort Wayne, INDIANA",
"iata": "(FWA)",
"startLetter": "F"
}, {
"location": "Fresno, CALIFORNIA",
"iata": "(FAT)",
"startLetter": "F"
}, {
"location": "Friday Harbor, WASHINGTON",
"iata": "(FRD)",
"startLetter": "F"
}, {
"location": "Garden City, KANSAS",
"iata": "(GCK)",
"startLetter": "G"
}, {
"location": "Gillette, WYOMING",
"iata": "(GCC)",
"startLetter": "G"
}, {
"location": "Grand Canyon / Tusayan, ARIZONA",
"iata": "(GCN)",
"startLetter": "G"
}, {
"location": "Grand Forks, NORTH DAKOTA",
"iata": "(GFK)",
"startLetter": "G"
}, {
"location": "Grand Island, NEBRASKA",
"iata": "(GRI)",
"startLetter": "G"
}, {
"location": "Grand Junction, COLORADO",
"iata": "(GJT)",
"startLetter": "G"
}, {
"location": "Grand Rapids, MICHIGAN",
"iata": "(GRR)",
"startLetter": "G"
}, {
"location": "Great Falls, MONTANA",
"iata": "(GTF)",
"startLetter": "G"
}, {
"location": "Green Bay, WISCONSIN",
"iata": "(GRB)",
"startLetter": "G"
}, {
"location": "Greensboro, NORTH CAROLINA",
"iata": "(GSO)",
"startLetter": "G"
}, {
"location": "Greenville, NORTH CAROLINA",
"iata": "(PGV)",
"startLetter": "G"
}, {
"location": "Greer, SOUTH CAROLINA",
"iata": "(GSP)",
"startLetter": "G"
}, {
"location": "Gulfport / Biloxi, MISSISSIPPI",
"iata": "(GPT)",
"startLetter": "G"
}, {
"location": "Gunnison, COLORADO",
"iata": "(GUC)",
"startLetter": "G"
}, {
"location": "Hailey, IDAHO",
"iata": "(SUN)",
"startLetter": "H"
}, {
"location": "Hancock / Calumet, MICHIGAN",
"iata": "(CMX)",
"startLetter": "H"
}, {
"location": "Harlingen, TEXAS",
"iata": "(HRL)",
"startLetter": "H"
}, {
"location": "Harrisburg / Middletown, PENNSYLVANIA",
"iata": "(MDT)",
"startLetter": "H"
}, {
"location": "Hartford, CONNECTICUT",
"iata": "(BDL)",
"startLetter": "H"
}, {
"location": "Hattiesburg / Laurel, MISSISSIPPI",
"iata": "(PIB)",
"startLetter": "H"
}, {
"location": "Hayden, COLORADO",
"iata": "(HDN)",
"startLetter": "H"
}, {
"location": "Helena, MONTANA",
"iata": "(HLN)",
"startLetter": "H"
}, {
"location": "Hibbing, MINNESOTA",
"iata": "(HIB)",
"startLetter": "H"
}, {
"location": "Hilo, HAWAII",
"iata": "(ITO)",
"startLetter": "H"
}, {
"location": "Hilton Head Island, SOUTH CAROLINA",
"iata": "(HHH)",
"startLetter": "H"
}, {
"location": "Hobbs, NEW MEXICO",
"iata": "(HOB)",
"startLetter": "H"
}, {
"location": "Honolulu, HAWAII",
"iata": "(HNL)",
"startLetter": "H"
}, {
"location": "Houston, TEXAS",
"iata": "(HOU)",
"startLetter": "H"
}, {
"location": "Houston, TEXAS",
"iata": "(IAH)",
"startLetter": "H"
}, {
"location": "Huntington, WEST VIRGINIA",
"iata": "(HTS)",
"startLetter": "H"
}, {
"location": "Huntsville, ALABAMA",
"iata": "(HSV)",
"startLetter": "H"
}, {
"location": "Hyannis, MASSACHUSETTS",
"iata": "(HYA)",
"startLetter": "H"
}, {
"location": "Idaho Falls, IDAHO",
"iata": "(IDA)",
"startLetter": "I"
}, {
"location": "Indianapolis, INDIANA",
"iata": "(IND)",
"startLetter": "I"
}, {
"location": "International Falls, MINNESOTA",
"iata": "(INL)",
"startLetter": "I"
}, {
"location": "Iron Mountain / Kingsford, MICHIGAN",
"iata": "(IMT)",
"startLetter": "I"
}, {
"location": "Islip, NEW YORK",
"iata": "(ISP)",
"startLetter": "I"
}, {
"location": "Ithaca, NEW YORK",
"iata": "(ITH)",
"startLetter": "I"
}, {
"location": "Jackson, MISSISSIPPI",
"iata": "(JAN)",
"startLetter": "J"
}, {
"location": "Jacksonville, NORTH CAROLINA",
"iata": "(OAJ)",
"startLetter": "J"
}, {
"location": "Jacksonville, FLORIDA",
"iata": "(JAX)",
"startLetter": "J"
}, {
"location": "Joplin, MISSOURI",
"iata": "(JLN)",
"startLetter": "J"
}, {
"location": "Kailua/Kona, HAWAII",
"iata": "(KOA)",
"startLetter": "K"
}, {
"location": "Kalamazoo / Battle Creek, MICHIGAN",
"iata": "(AZO)",
"startLetter": "K"
}, {
"location": "Kalispell, MONTANA",
"iata": "(FCA)",
"startLetter": "K"
}, {
"location": "Kansas City, MISSOURI",
"iata": "(MCI)",
"startLetter": "K"
}, {
"location": "Kaunakakai, HAWAII",
"iata": "(MKK)",
"startLetter": "K"
}, {
"location": "Kearney, NEBRASKA",
"iata": "(EAR)",
"startLetter": "K"
}, {
"location": "Key West, FLORIDA",
"iata": "(EYW)",
"startLetter": "K"
}, {
"location": "Klamath Falls, OREGON",
"iata": "(LMT)",
"startLetter": "K"
}, {
"location": "Knoxville, TENNESSEE",
"iata": "(TYS)",
"startLetter": "K"
}, {
"location": "Lafayette, LOUISIANA",
"iata": "(LFT)",
"startLetter": "L"
}, {
"location": "Lake Charles, LOUISIANA",
"iata": "(LCH)",
"startLetter": "L"
}, {
"location": "Lanai City (Lānaʻi City), HAWAII",
"iata": "(LNY)",
"startLetter": "L"
}, {
"location": "Lansing, MICHIGAN",
"iata": "(LAN)",
"startLetter": "L"
}, {
"location": "Laramie, WYOMING",
"iata": "(LAR)",
"startLetter": "L"
}, {
"location": "Laredo, TEXAS",
"iata": "(LRD)",
"startLetter": "L"
}, {
"location": "Las Vegas, NEVADA",
"iata": "(LAS)",
"startLetter": "L"
}, {
"location": "Latrobe, PENNSYLVANIA",
"iata": "(LBE)",
"startLetter": "L"
}, {
"location": "Lawton, OKLAHOMA",
"iata": "(LAW)",
"startLetter": "L"
}, {
"location": "Lebanon, NEW HAMPSHIRE",
"iata": "(LEB)",
"startLetter": "L"
}, {
"location": "Lewisburg, WEST VIRGINIA",
"iata": "(LWB)",
"startLetter": "L"
}, {
"location": "Lewiston, IDAHO",
"iata": "(LWS)",
"startLetter": "L"
}, {
"location": "Lexington, KENTUCKY",
"iata": "(LEX)",
"startLetter": "L"
}, {
"location": "Lihue (Līhuʻe), HAWAII",
"iata": "(LIH)",
"startLetter": "L"
}, {
"location": "Lincoln, NEBRASKA",
"iata": "(LNK)",
"startLetter": "L"
}, {
"location": "Little Rock, ARKANSAS",
"iata": "(LIT)",
"startLetter": "L"
}, {
"location": "Long Beach, CALIFORNIA",
"iata": "(LGB)",
"startLetter": "L"
}, {
"location": "Longview, TEXAS",
"iata": "(GGG)",
"startLetter": "L"
}, {
"location": "Los Angeles, CALIFORNIA",
"iata": "(LAX)",
"startLetter": "L"
}, {
"location": "Louisville, KENTUCKY",
"iata": "(SDF)",
"startLetter": "L"
}, {
"location": "Lubbock, TEXAS",
"iata": "(LBB)",
"startLetter": "L"
}, {
"location": "Lynchburg, VIRGINIA",
"iata": "(LYH)",
"startLetter": "L"
}, {
"location": "Mammoth Lakes, CALIFORNIA",
"iata": "(MMH)",
"startLetter": "M"
}, {
"location": "Manchester, NEW HAMPSHIRE",
"iata": "(MHT)",
"startLetter": "M"
}, {
"location": "Manhattan, KANSAS",
"iata": "(MHK)",
"startLetter": "M"
}, {
"location": "Marion, ILLINOIS",
"iata": "(MWA)",
"startLetter": "M"
}, {
"location": "Marquette / Gwinn, MICHIGAN",
"iata": "(MQT)",
"startLetter": "M"
}, {
"location": "McAllen, TEXAS",
"iata": "(MFE)",
"startLetter": "M"
}, {
"location": "Medford, OREGON",
"iata": "(MFR)",
"startLetter": "M"
}, {
"location": "Melbourne, FLORIDA",
"iata": "(MLB)",
"startLetter": "M"
}, {
"location": "Memphis, TENNESSEE",
"iata": "(MEM)",
"startLetter": "M"
}, {
"location": "Mesa, ARIZONA",
"iata": "(AZA)",
"startLetter": "M"
}, {
"location": "Miami, FLORIDA",
"iata": "(MIA)",
"startLetter": "M"
}, {
"location": "Midland, TEXAS",
"iata": "(MAF)",
"startLetter": "M"
}, {
"location": "Milwaukee, WISCONSIN",
"iata": "(MKE)",
"startLetter": "M"
}, {
"location": "Minneapolis, MINNESOTA",
"iata": "(MSP)",
"startLetter": "M"
}, {
"location": "Minot, NORTH DAKOTA",
"iata": "(MOT)",
"startLetter": "M"
}, {
"location": "Missoula, MONTANA",
"iata": "(MSO)",
"startLetter": "M"
}, {
"location": "Mobile, ALABAMA",
"iata": "(MOB)",
"startLetter": "M"
}, {
"location": "Modesto, CALIFORNIA",
"iata": "(MOD)",
"startLetter": "M"
}, {
"location": "Moline, ILLINOIS",
"iata": "(MLI)",
"startLetter": "M"
}, {
"location": "Monroe, LOUISIANA",
"iata": "(MLU)",
"startLetter": "M"
}, {
"location": "Monterey, CALIFORNIA",
"iata": "(MRY)",
"startLetter": "M"
}, {
"location": "Montgomery, ALABAMA",
"iata": "(MGM)",
"startLetter": "M"
}, {
"location": "Montrose, COLORADO",
"iata": "(MTJ)",
"startLetter": "M"
}, {
"location": "Morgantown, WEST VIRGINIA",
"iata": "(MGW)",
"startLetter": "M"
}, {
"location": "Muskegon, MICHIGAN",
"iata": "(MKG)",
"startLetter": "M"
}, {
"location": "Myrtle Beach, SOUTH CAROLINA",
"iata": "(MYR)",
"startLetter": "M"
}, {
"location": "Nashville, TENNESSEE",
"iata": "(BNA)",
"startLetter": "N"
}, {
"location": "New Bedford, MASSACHUSETTS",
"iata": "(EWB)",
"startLetter": "N"
}, {
"location": "New Bern, NORTH CAROLINA",
"iata": "(EWN)",
"startLetter": "N"
}, {
"location": "New Haven, CONNECTICUT",
"iata": "(HVN)",
"startLetter": "N"
}, {
"location": "New Orleans, LOUISIANA",
"iata": "(MSY)",
"startLetter": "N"
}, {
"location": "New York, NEW YORK",
"iata": "(LGA)",
"startLetter": "N"
}, {
"location": "New York, NEW YORK",
"iata": "(JFK)",
"startLetter": "N"
}, {
"location": "Newark, NEW JERSEY",
"iata": "(EWR)",
"startLetter": "N"
}, {
"location": "Newburgh, NEW YORK",
"iata": "(SWF)",
"startLetter": "N"
}, {
"location": "Newport News, VIRGINIA",
"iata": "(PHF)",
"startLetter": "N"
}, {
"location": "Niagara Falls, NEW YORK",
"iata": "(IAG)",
"startLetter": "N"
}, {
"location": "Norfolk, VIRGINIA",
"iata": "(ORF)",
"startLetter": "N"
}, {
"location": "North Bend, OREGON",
"iata": "(OTH)",
"startLetter": "N"
}, {
"location": "Obyan, Saipan Island, NORTHERN MARIANAS",
"iata": "(SPN)",
"startLetter": "O"
}, {
"location": "Oklahoma City, OKLAHOMA",
"iata": "(OKC)",
"startLetter": "O"
}, {
"location": "Omaha, NEBRASKA",
"iata": "(OMA)",
"startLetter": "O"
}, {
"location": "Ontario, CALIFORNIA",
"iata": "(ONT)",
"startLetter": "O"
}, {
"location": "Orlando, FLORIDA",
"iata": "(MCO)",
"startLetter": "O"
}, {
"location": "Orlando/Sanford, FLORIDA",
"iata": "(SFB)",
"startLetter": "O"
}, {
"location": "Owensboro, KENTUCKY",
"iata": "(OWB)",
"startLetter": "O"
}, {
"location": "Page, ARIZONA",
"iata": "(PGA)",
"startLetter": "P"
}, {
"location": "Pago Pago, Tutuila, AMERICAN SAMOA",
"iata": "(PPG)",
"startLetter": "P"
}, {
"location": "Palm Springs, CALIFORNIA",
"iata": "(PSP)",
"startLetter": "P"
}, {
"location": "Panama City Beach, FLORIDA",
"iata": "(ECP)",
"startLetter": "P"
}, {
"location": "Pasco, WASHINGTON",
"iata": "(PSC)",
"startLetter": "P"
}, {
"location": "Peach Springs, ARIZONA",
"iata": "(GCW)",
"startLetter": "P"
}, {
"location": "Pellston, MICHIGAN",
"iata": "(PLN)",
"startLetter": "P"
}, {
"location": "Pensacola, FLORIDA",
"iata": "(PNS)",
"startLetter": "P"
}, {
"location": "Peoria, ILLINOIS",
"iata": "(PIA)",
"startLetter": "P"
}, {
"location": "Philadelphia, PENNSYLVANIA",
"iata": "(PHL)",
"startLetter": "P"
}, {
"location": "Phoenix, ARIZONA",
"iata": "(PHX)",
"startLetter": "P"
}, {
"location": "Pierre, SOUTH DAKOTA",
"iata": "(PIR)",
"startLetter": "P"
}, {
"location": "Pittsburgh, PENNSYLVANIA",
"iata": "(PIT)",
"startLetter": "P"
}, {
"location": "Plattsburgh, NEW YORK",
"iata": "(PBG)",
"startLetter": "P"
}, {
"location": "Pocatello / Arbon Valley, IDAHO",
"iata": "(PIH)",
"startLetter": "P"
}, {
"location": "Ponce, PUERTO RICO",
"iata": "(PSE)",
"startLetter": "P"
}, {
"location": "Port Angeles, WASHINGTON",
"iata": "(CLM)",
"startLetter": "P"
}, {
"location": "Portland, OREGON",
"iata": "(PDX)",
"startLetter": "P"
}, {
"location": "Portland, MAINE",
"iata": "(PWM)",
"startLetter": "P"
}, {
"location": "Presque Isle, MAINE",
"iata": "(PQI)",
"startLetter": "P"
}, {
"location": "Providence / Warwick, RHODE ISLAND",
"iata": "(PVD)",
"startLetter": "P"
}, {
"location": "Provincetown, MASSACHUSETTS",
"iata": "(PVC)",
"startLetter": "P"
}, {
"location": "Provo, UTAH",
"iata": "(PVU)",
"startLetter": "P"
}, {
"location": "Pullman / Moscow, Idaho, WASHINGTON",
"iata": "(PUW)",
"startLetter": "P"
}, {
"location": "Punta Gorda, FLORIDA",
"iata": "(PGD)",
"startLetter": "P"
}, {
"location": "Rapid City, SOUTH DAKOTA",
"iata": "(RAP)",
"startLetter": "R"
}, {
"location": "Redding, CALIFORNIA",
"iata": "(RDD)",
"startLetter": "R"
}, {
"location": "Redmond, OREGON",
"iata": "(RDM)",
"startLetter": "R"
}, {
"location": "Reno, NEVADA",
"iata": "(RNO)",
"startLetter": "R"
}, {
"location": "Rhinelander, WISCONSIN",
"iata": "(RHI)",
"startLetter": "R"
}, {
"location": "Richmond, VIRGINIA",
"iata": "(RIC)",
"startLetter": "R"
}, {
"location": "Riverton, WYOMING",
"iata": "(RIW)",
"startLetter": "R"
}, {
"location": "Roanoke, VIRGINIA",
"iata": "(ROA)",
"startLetter": "R"
}, {
"location": "Rochester, MINNESOTA",
"iata": "(RST)",
"startLetter": "R"
}, {
"location": "Rochester, NEW YORK",
"iata": "(ROC)",
"startLetter": "R"
}, {
"location": "Rock Springs, WYOMING",
"iata": "(RKS)",
"startLetter": "R"
}, {
"location": "Rockford, ILLINOIS",
"iata": "(RFD)",
"startLetter": "R"
}, {
"location": "Rockland, MAINE",
"iata": "(RKD)",
"startLetter": "R"
}, {
"location": "Roswell, NEW MEXICO",
"iata": "(ROW)",
"startLetter": "R"
}, {
"location": "Rota Island, NORTHERN MARIANAS",
"iata": "(ROP)",
"startLetter": "R"
}, {
"location": "Saginaw, MICHIGAN",
"iata": "(MBS)",
"startLetter": "S"
}, {
"location": "Salisbury, MARYLAND",
"iata": "(SBY)",
"startLetter": "S"
}, {
"location": "Salt Lake City, UTAH",
"iata": "(SLC)",
"startLetter": "S"
}, {
"location": "San Angelo, TEXAS",
"iata": "(SJT)",
"startLetter": "S"
}, {
"location": "San Antonio, TEXAS",
"iata": "(SAT)",
"startLetter": "S"
}, {
"location": "San Diego, CALIFORNIA",
"iata": "(SAN)",
"startLetter": "S"
}, {
"location": "San Francisco, CALIFORNIA",
"iata": "(SFO)",
"startLetter": "S"
}, {
"location": "San Jose, CALIFORNIA",
"iata": "(SJC)",
"startLetter": "S"
}, {
"location": "San Juan / Carolina, PUERTO RICO",
"iata": "(SJU)",
"startLetter": "S"
}, {
"location": "San Juan / Miramar, PUERTO RICO",
"iata": "(SIG)",
"startLetter": "S"
}, {
"location": "San Luis Obispo, CALIFORNIA",
"iata": "(SBP)",
"startLetter": "S"
}, {
"location": "Santa Ana, CALIFORNIA",
"iata": "(SNA)",
"startLetter": "S"
}, {
"location": "Santa Barbara, CALIFORNIA",
"iata": "(SBA)",
"startLetter": "S"
}, {
"location": "Santa Fe, NEW MEXICO",
"iata": "(SAF)",
"startLetter": "S"
}, {
"location": "Santa Maria, CALIFORNIA",
"iata": "(SMX)",
"startLetter": "S"
}, {
"location": "Santa Rosa, CALIFORNIA",
"iata": "(STS)",
"startLetter": "S"
}, {
"location": "Sarasota / Bradenton, FLORIDA",
"iata": "(SRQ)",
"startLetter": "S"
}, {
"location": "Sault Ste. Marie, MICHIGAN",
"iata": "(CIU)",
"startLetter": "S"
}, {
"location": "Savannah, GEORGIA",
"iata": "(SAV)",
"startLetter": "S"
}, {
"location": "Scottsbluff, NEBRASKA",
"iata": "(BFF)",
"startLetter": "S"
}, {
"location": "Seattle, WASHINGTON",
"iata": "(BFI)",
"startLetter": "S"
}, {
"location": "Seattle / Tacoma (SeaTac), WASHINGTON",
"iata": "(SEA)",
"startLetter": "S"
}, {
"location": "Sheridan, WYOMING",
"iata": "(SHR)",
"startLetter": "S"
}, {
"location": "Shreveport, LOUISIANA",
"iata": "(SHV)",
"startLetter": "S"
}, {
"location": "Sioux City, IOWA",
"iata": "(SUX)",
"startLetter": "S"
}, {
"location": "Sioux Falls, SOUTH DAKOTA",
"iata": "(FSD)",
"startLetter": "S"
}, {
"location": "South Bend, INDIANA",
"iata": "(SBN)",
"startLetter": "S"
}, {
"location": "Spokane, WASHINGTON",
"iata": "(GEG)",
"startLetter": "S"
}, {
"location": "Springfield, ILLINOIS",
"iata": "(SPI)",
"startLetter": "S"
}, {
"location": "Springfield, MISSOURI",
"iata": "(SGF)",
"startLetter": "S"
}, {
"location": "St. Augustine, FLORIDA",
"iata": "(UST)",
"startLetter": "S"
}, {
"location": "St. Cloud, MINNESOTA",
"iata": "(STC)",
"startLetter": "S"
}, {
"location": "St. George / Beaver, UTAH",
"iata": "(SGU)",
"startLetter": "S"
}, {
"location": "St. Louis, MISSOURI",
"iata": "(STL)",
"startLetter": "S"
}, {
"location": "St. Petersburg/Clearwater, FLORIDA",
"iata": "(PIE)",
"startLetter": "S"
}, {
"location": "State College, PENNSYLVANIA",
"iata": "(SCE)",
"startLetter": "S"
}, {
"location": "Staunton / Waynesboro / Harrisonburg, VIRGINIA",
"iata": "(SHD)",
"startLetter": "S"
}, {
"location": "Stockton, CALIFORNIA",
"iata": "(SCK)",
"startLetter": "S"
}, {
"location": "Syracuse, NEW YORK",
"iata": "(SYR)",
"startLetter": "S"
}, {
"location": "Tampa, FLORIDA",
"iata": "(TPA)",
"startLetter": "T"
}, {
"location": "Texarkana, ARKANSAS",
"iata": "(TXK)",
"startLetter": "T"
}, {
"location": "Toledo, OHIO",
"iata": "(TOL)",
"startLetter": "T"
}, {
"location": "Traverse City, MICHIGAN",
"iata": "(TVC)",
"startLetter": "T"
}, {
"location": "Trenton, NEW JERSEY",
"iata": "(TTN)",
"startLetter": "T"
}, {
"location": "Tucson, ARIZONA",
"iata": "(TUS)",
"startLetter": "T"
}, {
"location": "Tulsa, OKLAHOMA",
"iata": "(TUL)",
"startLetter": "T"
}, {
"location": "Twin Falls, IDAHO",
"iata": "(TWF)",
"startLetter": "T"
}, {
"location": "Tyler, TEXAS",
"iata": "(TYR)",
"startLetter": "T"
}, {
"location": "Valparaiso, FLORIDA",
"iata": "(VPS)",
"startLetter": "V"
}, {
"location": "Vieques, PUERTO RICO",
"iata": "(VQS)",
"startLetter": "V"
}, {
"location": "Vineyard Haven, MASSACHUSETTS",
"iata": "(MVY)",
"startLetter": "V"
}, {
"location": "Walla Walla, WASHINGTON",
"iata": "(ALW)",
"startLetter": "W"
}, {
"location": "Washington, D.C. / Arlington County, VIRGINIA",
"iata": "(DCA)",
"startLetter": "W"
}, {
"location": "Washington, D.C. / Dulles / Chantilly, VIRGINIA",
"iata": "(IAD)",
"startLetter": "W"
}, {
"location": "Waterloo, IOWA",
"iata": "(ALO)",
"startLetter": "W"
}, {
"location": "Watertown, NEW YORK",
"iata": "(ART)",
"startLetter": "W"
}, {
"location": "Wausau, WISCONSIN",
"iata": "(CWA)",
"startLetter": "W"
}, {
"location": "Wenatchee, WASHINGTON",
"iata": "(EAT)",
"startLetter": "W"
}, {
"location": "Wendover, UTAH",
"iata": "(ENV)",
"startLetter": "W"
}, {
"location": "West Palm Beach, FLORIDA",
"iata": "(PBI)",
"startLetter": "W"
}, {
"location": "Westerly, RHODE ISLAND",
"iata": "(WST)",
"startLetter": "W"
}, {
"location": "White Plains, NEW YORK",
"iata": "(HPN)",
"startLetter": "W"
}, {
"location": "Wichita, KANSAS",
"iata": "(ICT)",
"startLetter": "W"
}, {
"location": "Wichita Falls, TEXAS",
"iata": "(SPS)",
"startLetter": "W"
}, {
"location": "Wilkes-Barre / Scranton, PENNSYLVANIA",
"iata": "(AVP)",
"startLetter": "W"
}, {
"location": "Williamsport, PENNSYLVANIA",
"iata": "(IPT)",
"startLetter": "W"
}, {
"location": "Williston, NORTH DAKOTA",
"iata": "(ISN)",
"startLetter": "W"
}, {
"location": "Wilmington, NORTH CAROLINA",
"iata": "(ILM)",
"startLetter": "W"
}, {
"location": "Youngstown / Warren, OHIO",
"iata": "(YNG)",
"startLetter": "Y"
}, {
"location": "Yuma, ARIZONA",
"iata": "(YUM)",
"startLetter": "Y"
}];
$scope.listviewSettings = {
theme: '',
themeVariant: '',
lang: '',
swipe: false,
enhance: true,
onItemTap: function (event, inst) {
var target = angular.element(event.domEvent.target),
item = angular.element(event.target);
if (target.hasClass('mbsc-ic')) {
item.toggleClass('star3');
target
.toggleClass('mbsc-ic-star3')
.toggleClass('mbsc-ic-star');
mobiscroll.toast({
message: 'Favorites updated'
});
}
}
};
$scope.optlSettings = {
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) {
//$scope.airportList.navigate(list.querySelector('.header' + text).nextElementSibling);
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);
}
}
};
$scope.isFirstLetterChanged = function (nv) {
if (nv && nv !== $scope.firstLetter) {
$scope.firstLetter = nv;
return true;
}
return false;
};
window.addEventListener('scroll', handleScroll);
window.addEventListener('touchmove', handleScroll);
}]);
<div ng-app="demoApp" ng-controller="demoController" class="md-navigate">
<div class="md-popup">c</div>
<ul class="md-alfabet" mobiscroll-optionlist="optlSettings" mobiscroll-instance="menustrip">
<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" mobiscroll-listview="listviewSettings" mobiscroll-data="data" mobiscroll-instance="airportList">
<li class="md-no-bookmark" ng-if="$index == 0">
<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" ng-class="'header' + item.startLetter[0]" ng-if="isFirstLetterChanged(item.startLetter)" >{{ item.startLetter[0] }}</li>
<li data-icon="star">{{ item.location }}<span class="md-iata">{{ item.iata }}</span></li>
</ul>
</div>
.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.
Component license
Purchase component licenses if you are looking for specific funcionality.
All
Framework license
Get all 36 components, including
Framework license
Get all 36 components, including
- Use it when building with plain and simple JS
- Compatible with vanilla JS app or frameworks like Vue
- Royalty-free commercial usage
- Technical support is included with the license
- Use it with jQuery and jQuery Mobile
- Enjoy the familiar API if you already use jQuery
- Royalty-free commercial usage
- Technical support is included with the license
- Use it with Angular JS and Ionic 1
- For web and mobile apps based on Angular 1.x
- Royalty-free commercial usage
- Technical support is included with the license
- Use it with Angular and Ionic 2/3/4
- Visual Studio and VS Code integration
- Royalty-free commercial usage
- Technical support is included with the license
- Use it when building with React JS
- Collection of UI components for web and mobile
- Royalty-free commercial usage
- Technical support is included with the license
Framework license
Select the development framework you are using. Get all 36 components with the license.
- Use it when building with plain and simple JS
- Compatible with vanilla JS app or frameworks like Vue
- Royalty-free commercial usage
- Technical support is included with the license
- Use it with jQuery and jQuery Mobile
- Enjoy the familiar API if you already use jQuery
- Royalty-free commercial usage
- Technical support is included with the license
- Use it with Angular JS and Ionic 1
- For web and mobile apps based on Angular 1.x
- Royalty-free commercial usage
- Technical support is included with the license
- Use it with Angular and Ionic 2/3/4
- Visual Studio and VS Code integration
- Royalty-free commercial usage
- Technical support is included with the license
- Use it when building with React JS
- Collection of UI components for web and mobile
- Royalty-free commercial usage
- Technical support is included with the license
Select the framework you are interested in
Use Javascript when building with plain and simple JS.
Use jQuery when you have jQuery already included or if you are building with jQuery Mobile.
Use AngularJS when building with Angular 1.x or Ionic 1.
Use Angular when building with Angular 2/4/5/6/7/8 or Ionic 2/3/4.
Use it when you are building your app or website with React.
Do you need additional support seats?
The license comes with one support seat. ( +$100/seat )
Add the source code?
What framework are you using?
We have to set you up with a trial for this to run 👍
Step 1.Install the Mobiscroll CLI from npm
$ npm install -g @mobiscroll/cli
The CLI makes configuring your apps super simple 👍
Step 2.Run the following command in the root folder of your Ionic project
$ mobiscroll config ionic
$ mobiscroll config ionic --lite
You will be prompted to log in with your mobiscroll account. Set your password here
Create an Ionic 3 & Mobiscroll starter with the CLI:
Run this command for Ionic 4 & Mobiscroll starter:
Step 3.Copy the code into your app.
Step 4.Run ionic serve in the root folder of your app 🎉
$ ionic serve
And voilà, everything should be running smoothly.
Step 1.Install the Mobiscroll CLI from npm
$ npm install -g @mobiscroll/cli
The CLI makes configuring your apps super simple 👍
Step 2.Run the following command in the root folder of your Angular project
$ mobiscroll config angular
$ mobiscroll config angular --lite
You will be prompted to log in with your mobiscroll account. Set your password here
Step 3.Copy the code into your app. HTML goes into the markup, TS into Typescript.
Step 4.Run ng serve in the root folder of your app 🎉
$ ng serve
And voilà, everything should be running smoothly.
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.
$ npm install
$ ionic serve
Let us know if we can help and enjoy!
Your password has been changed!
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! 👍
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.
$ npm install
$ ng serve --open
Let us know if we can help and enjoy! 👍
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.
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! 👍