diff --git a/dist/css/ionic-ios7.css b/dist/css/ionic-ios7.css
index 7e81972071..599684969a 100644
--- a/dist/css/ionic-ios7.css
+++ b/dist/css/ionic-ios7.css
@@ -370,6 +370,14 @@ body, .ionic-body {
height: 100%;
-webkit-overflow-scrolling: touch; }
+.scroll-content {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow: hidden; }
+
.has-header {
top: 44px; }
@@ -1456,6 +1464,21 @@ button.item-button-right:after {
height: 100%;
border: none;
border-radius: 0; }
+ .item-drag .button .icon, .item-drag .button i {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ -webkit-align-items: center;
+ -moz-align-items: center;
+ align-items: center;
+ font-size: 24px;
+ position: absolute;
+ top: 0;
+ height: 100%; }
/**
* The hidden right-side buttons that can be exposed under a list item
diff --git a/dist/css/ionic-scoped.css b/dist/css/ionic-scoped.css
index f3389e67f3..c000e1dc6e 100644
--- a/dist/css/ionic-scoped.css
+++ b/dist/css/ionic-scoped.css
@@ -1793,6 +1793,13 @@
width: 100%;
height: 100%;
-webkit-overflow-scrolling: touch; }
+ .ionic .scroll-content {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow: hidden; }
.ionic .has-header {
top: 44px; }
.ionic .has-footer {
@@ -2793,6 +2800,21 @@
height: 100%;
border: none;
border-radius: 0; }
+ .ionic .item-drag .button .icon, .ionic .item-drag .button i {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ -webkit-align-items: center;
+ -moz-align-items: center;
+ align-items: center;
+ font-size: 24px;
+ position: absolute;
+ top: 0;
+ height: 100%; }
.ionic .item-options {
position: absolute;
top: 0;
diff --git a/dist/css/ionic.css b/dist/css/ionic.css
index 08516c0ffc..783c39b30a 100644
--- a/dist/css/ionic.css
+++ b/dist/css/ionic.css
@@ -2201,6 +2201,14 @@ body, .ionic-body {
height: 100%;
-webkit-overflow-scrolling: touch; }
+.scroll-content {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow: hidden; }
+
.has-header {
top: 44px; }
@@ -3351,6 +3359,21 @@ button.item-button-right:after {
height: 100%;
border: none;
border-radius: 0; }
+ .item-drag .button .icon, .item-drag .button i {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -moz-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ -webkit-align-items: center;
+ -moz-align-items: center;
+ align-items: center;
+ font-size: 24px;
+ position: absolute;
+ top: 0;
+ height: 100%; }
/**
* The hidden right-side buttons that can be exposed under a list item
diff --git a/dist/js/ionic-angular.js b/dist/js/ionic-angular.js
index 8b59cb3746..70165b4123 100644
--- a/dist/js/ionic-angular.js
+++ b/dist/js/ionic-angular.js
@@ -508,6 +508,9 @@ angular.module('ionic.ui.list', ['ngAnimate'])
\
\
\
+ \
+ \
+
\
\
\
\
@@ -588,7 +591,10 @@ angular.module('ionic.ui.list', ['ngAnimate'])
compile: function(element, attr, transclude) {
return function($scope, $element, $attr) {
- var lv = new ionic.views.List({el: $element[0]});
+ var lv = new ionic.views.ListView({
+ el: $element[0],
+ listEl: $element[0].children[0]
+ });
if(attr.animation) {
$element.addClass(attr.animation);
@@ -916,6 +922,28 @@ angular.module('ionic.ui.nav', ['ionic.service.templateLoad', 'ionic.service.ges
(function() {
'use strict';
+/**
+ * @description
+ * The scroll directive lets you enable a content area for
+ * our custom momentum scrolling area. The benefit to a custom
+ * scroll area is configurability, and avoidance of the
+ * buggy -webkit-overflow-scrolling: touch.
+ */
+
+angular.module('ionic.ui.scroll', [])
+
+.directive('scroll', function() {
+ return {
+ restrict: 'ECA',
+ replace: true,
+ transclude: true,
+ template: ''
+ };
+});
+;
+(function() {
+'use strict';
+
/**
* @description
* The sideMenuCtrl lets you quickly have a draggable side
diff --git a/dist/js/ionic.js b/dist/js/ionic.js
index 509bf60e4a..408acc6645 100644
--- a/dist/js/ionic.js
+++ b/dist/js/ionic.js
@@ -3012,13 +3012,6 @@ window.ionic = {
// Start the drag states
this._initDrag();
- // Listen for drag and release events
- window.ionic.onGesture('drag', function(e) {
- _this._handleDrag(e);
- }, this.el);
- window.ionic.onGesture('release', function(e) {
- _this._handleEndDrag(e);
- }, this.el);
};
ionic.views.List.prototype = {
@@ -3053,6 +3046,8 @@ window.ionic = {
this._isDragging = false;
+ return false;
+
// Check if this is a reorder drag
if(ionic.DomUtil.getParentOrSelfWithClass(e.target, 'list-item-drag') && (e.gesture.direction == 'up' || e.gesture.direction == 'down')) {
var item = this._getItem(e.target);
@@ -3090,6 +3085,7 @@ window.ionic = {
_handleEndDrag: function(e) {
var _this = this;
+ return false;
if(!this._dragOp) {
this._initDrag();
@@ -3106,6 +3102,7 @@ window.ionic = {
*/
_handleDrag: function(e) {
var _this = this, content, buttons;
+ return false;
if(!this._dragOp) {
this._startDrag(e);
diff --git a/js/ext/angular/src/directive/ionicList.js b/js/ext/angular/src/directive/ionicList.js
index 89c804081f..009c08ad53 100644
--- a/js/ext/angular/src/directive/ionicList.js
+++ b/js/ext/angular/src/directive/ionicList.js
@@ -24,6 +24,9 @@ angular.module('ionic.ui.list', ['ngAnimate'])
\
\
\
+ \
+ \
+
\
\
\
\
@@ -104,7 +107,10 @@ angular.module('ionic.ui.list', ['ngAnimate'])
compile: function(element, attr, transclude) {
return function($scope, $element, $attr) {
- var lv = new ionic.views.List({el: $element[0]});
+ var lv = new ionic.views.ListView({
+ el: $element[0],
+ listEl: $element[0].children[0]
+ });
if(attr.animation) {
$element.addClass(attr.animation);
diff --git a/js/ext/angular/src/directive/ionicScroll.js b/js/ext/angular/src/directive/ionicScroll.js
new file mode 100644
index 0000000000..8e73a95f68
--- /dev/null
+++ b/js/ext/angular/src/directive/ionicScroll.js
@@ -0,0 +1,21 @@
+(function() {
+'use strict';
+
+/**
+ * @description
+ * The scroll directive lets you enable a content area for
+ * our custom momentum scrolling area. The benefit to a custom
+ * scroll area is configurability, and avoidance of the
+ * buggy -webkit-overflow-scrolling: touch.
+ */
+
+angular.module('ionic.ui.scroll', [])
+
+.directive('scroll', function() {
+ return {
+ restrict: 'ECA',
+ replace: true,
+ transclude: true,
+ template: ''
+ };
+});
diff --git a/js/ext/angular/test/list.html b/js/ext/angular/test/list.html
index 4af067361d..64bd41fc72 100644
--- a/js/ext/angular/test/list.html
+++ b/js/ext/angular/test/list.html
@@ -63,7 +63,7 @@
-
+
@@ -79,7 +79,7 @@
-
+
@@ -132,9 +132,10 @@
console.log("REFRESHING");
};
- $scope.items = [
- {
- text: 'Item 1',
+ $scope.items = [];
+ for(var i = 0; i < 20; i++) {
+ $scope.items.push({
+ text: 'Item ' + i,
canDelete: true,
canSwipe: true,
canReorder: true,
@@ -146,47 +147,9 @@
type: 'button-danger',
buttonClicked: removeItem,
}]
- },
- {
- text: 'Item 2',
- canDelete: true,
- canSwipe: true,
- canReorder: true,
- icon: 'icon-chevron-right',
- deleteItem: removeItem,
- buttons: [{
- text: 'Kill',
- type: 'button-danger',
- buttonClicked: removeItem,
- }]
- },
- {
- text: 'Item 3',
- canDelete: true,
- canSwipe: true,
- canReorder: true,
- icon: 'icon-chevron-right',
- deleteItem: removeItem,
- buttons: [{
- text: 'Kill',
- type: 'button-danger',
- buttonClicked: removeItem,
- }]
- },
- {
- text: 'Item 4',
- canDelete: true,
- canSwipe: true,
- canReorder: true,
- icon: 'icon-chevron-right',
- deleteItem: removeItem,
- buttons: [{
- text: 'Kill',
- type: 'button-danger',
- buttonClicked: removeItem,
- }]
- }
- ];
+ });
+ }
+
$scope.edit = function() {
$scope.isEditingItems = !$scope.isEditingItems;
}
diff --git a/js/views/listView.js b/js/views/listView.js
index 1148996a07..8f66747a88 100644
--- a/js/views/listView.js
+++ b/js/views/listView.js
@@ -376,13 +376,6 @@
// Start the drag states
this._initDrag();
- // Listen for drag and release events
- window.ionic.onGesture('drag', function(e) {
- _this._handleDrag(e);
- }, this.el);
- window.ionic.onGesture('release', function(e) {
- _this._handleEndDrag(e);
- }, this.el);
};
ionic.views.List.prototype = {
@@ -417,6 +410,8 @@
this._isDragging = false;
+ return false;
+
// Check if this is a reorder drag
if(ionic.DomUtil.getParentOrSelfWithClass(e.target, 'list-item-drag') && (e.gesture.direction == 'up' || e.gesture.direction == 'down')) {
var item = this._getItem(e.target);
@@ -454,6 +449,7 @@
_handleEndDrag: function(e) {
var _this = this;
+ return false;
if(!this._dragOp) {
this._initDrag();
@@ -470,6 +466,7 @@
*/
_handleDrag: function(e) {
var _this = this, content, buttons;
+ return false;
if(!this._dragOp) {
this._startDrag(e);
diff --git a/scss/ionic/_items.scss b/scss/ionic/_items.scss
index 914268508e..3d171e316c 100644
--- a/scss/ionic/_items.scss
+++ b/scss/ionic/_items.scss
@@ -483,6 +483,14 @@ button.item-button-right:after {
height: 100%;
border: none;
border-radius: 0;
+ .icon, i {
+ @include display-flex();
+ @include align-items(center);
+ font-size: 24px;
+ position: absolute;
+ top: 0;
+ height: 100%;
+ }
}
}
/**
diff --git a/scss/ionic/_scaffolding.scss b/scss/ionic/_scaffolding.scss
index fb2c4568c7..9edb8573e8 100644
--- a/scss/ionic/_scaffolding.scss
+++ b/scss/ionic/_scaffolding.scss
@@ -67,6 +67,14 @@ body, .ionic-body {
-webkit-overflow-scrolling: touch;
}
+.scroll-content {
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ overflow: hidden;
+}
// Pad top/bottom of content so it doesn't hide behind .bar-title and .bar-tab.
// Note: For these to work, content must come after both bars in the markup
.has-header {
diff --git a/scss/ionic/_variables.scss b/scss/ionic/_variables.scss
index fdc897ac4e..67df07d6ff 100644
--- a/scss/ionic/_variables.scss
+++ b/scss/ionic/_variables.scss
@@ -403,6 +403,7 @@ $card-border-radius: 2px !default;
$item-border-width: 1px !default;
$item-border-color: #666;
+$item-border-style: solid;
$item-box-shadow: inset 0 0 $item-border-width $item-border-color;
$item-padding: 15px !default;
diff --git a/test/biglists.html b/test/biglists.html
index cb672d27fb..47c0c56cf6 100644
--- a/test/biglists.html
+++ b/test/biglists.html
@@ -7,11 +7,6 @@
@@ -20,1255 +15,1258 @@
Lists
-
+