Skip to content

Commit 2f53196

Browse files
committed
release: v1.1.1 "yttrium-yeti"
1 parent 860caeb commit 2f53196

14 files changed

+4597
-1274
lines changed

CHANGELOG.md

Lines changed: 1539 additions & 0 deletions
Large diffs are not rendered by default.

bower.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "ionic",
3-
"version": "1.1.0",
4-
"codename": "xenon-xerus",
3+
"version": "1.1.1",
4+
"codename": "yttrium-yeti",
55
"homepage": "https://github.com/driftyco/ionic",
66
"authors": [
77
"Max Lynch <[email protected]>",

component.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"repo": "driftyco/ionic",
33
"development": {},
4-
"version": "1.1.0",
4+
"version": "1.1.1",
55
"styles": [
66
"dist/css/ionic.css"
77
],

config/CODENAMES

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
yttrium-yeti
21
zirconium-zeren

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "ionic-sdk",
33
"private": false,
44
"version": "1.1.1",
5-
"codename": "xenon-xerus",
5+
"codename": "yttrium-yeti",
66
"repository": {
77
"url": "git://github.com/driftyco/ionic.git"
88
},

release/css/ionic.css

Lines changed: 2811 additions & 1214 deletions
Large diffs are not rendered by default.

release/css/ionic.min.css

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

release/js/ionic-angular.js

Lines changed: 103 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
* Copyright 2014 Drifty Co.
33
* http://drifty.com/
44
*
5-
* Ionic, v1.1.0
5+
* Ionic, v1.1.1
66
* A powerful HTML5 mobile app framework.
77
* http://ionicframework.com/
88
*
@@ -14,7 +14,7 @@
1414

1515
(function() {
1616
/* eslint no-unused-vars:0 */
17-
var IonicModule = angular.module('ionic', ['ngAnimate', 'ngSanitize', 'ui.router']),
17+
var IonicModule = angular.module('ionic', ['ngAnimate', 'ngSanitize', 'ui.router', 'ngIOS9UIWebViewPatch']),
1818
extend = angular.extend,
1919
forEach = angular.forEach,
2020
isDefined = angular.isDefined,
@@ -446,7 +446,7 @@ IonicModule
446446
return {
447447
/**
448448
* @ngdoc method
449-
* @name $ionicBody#add
449+
* @name $ionicBody#addClass
450450
* @description Add a class to the document's body element.
451451
* @param {string} class Each argument will be added to the body element.
452452
* @returns {$ionicBody} The $ionicBody service so methods can be chained.
@@ -2105,7 +2105,7 @@ IonicModule
21052105
// http://blogs.msdn.com/b/msdn_answers/archive/2015/02/10/
21062106
// running-cordova-apps-on-windows-and-windows-phone-8-1-using-ionic-angularjs-and-other-frameworks.aspx
21072107
.config(['$compileProvider', function($compileProvider) {
2108-
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|tel|ftp|mailto|file|ghttps?|ms-appx|x-wmapp0):/);
2108+
$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|sms|tel|geo|ftp|mailto|file|ghttps?|ms-appx|x-wmapp0):/);
21092109
$compileProvider.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|content|blob|ms-appx|x-wmapp0):|data:image\//);
21102110
}]);
21112111

@@ -2530,6 +2530,7 @@ function($rootScope, $ionicBody, $compile, $timeout, $ionicPlatform, $ionicTempl
25302530
self.scope.$parent && self.scope.$parent.$broadcast(self.viewType + '.shown', self);
25312531
self.el.classList.add('active');
25322532
self.scope.$broadcast('$ionicHeader.align');
2533+
self.scope.$broadcast('$ionicFooter.align');
25332534
}, 20);
25342535

25352536
return $timeout(function() {
@@ -3534,7 +3535,7 @@ function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicB
35343535
};
35353536

35363537
self.remove = function() {
3537-
if (self.removed || !$ionicModal.stack.isHighest(self)) return;
3538+
if (self.removed) return;
35383539

35393540
self.hide(function() {
35403541
self.element.remove();
@@ -3557,8 +3558,8 @@ function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicB
35573558
var showDelay = 0;
35583559

35593560
if (popupStack.length > 0) {
3560-
popupStack[popupStack.length - 1].hide();
35613561
showDelay = config.stackPushDelay;
3562+
$timeout(popupStack[popupStack.length - 1].hide, showDelay, false);
35623563
} else {
35633564
//Add popup-open & backdrop if this is first popup
35643565
$ionicBody.addClass('popup-open');
@@ -3591,6 +3592,8 @@ function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicB
35913592
popupStack.splice(index, 1);
35923593
}
35933594

3595+
popup.remove();
3596+
35943597
if (popupStack.length > 0) {
35953598
popupStack[popupStack.length - 1].show();
35963599
} else {
@@ -3606,7 +3609,6 @@ function($ionicTemplateLoader, $ionicBackdrop, $q, $timeout, $rootScope, $ionicB
36063609
($ionicPopup._backButtonActionDone || noop)();
36073610
}
36083611

3609-
popup.remove();
36103612

36113613
return result;
36123614
});
@@ -3907,7 +3909,7 @@ IonicModule
39073909
* @name $ionicScrollDelegate#freezeScroll
39083910
* @description Does not allow this scroll view to scroll either x or y.
39093911
* @param {boolean=} shouldFreeze Should this scroll view be prevented from scrolling or not.
3910-
* @returns {object} If the scroll view is being prevented from scrolling or not.
3912+
* @returns {boolean} If the scroll view is being prevented from scrolling or not.
39113913
*/
39123914
'freezeScroll',
39133915
/**
@@ -4951,6 +4953,82 @@ function($timeout, $document, $q, $ionicClickBlock, $ionicConfig, $ionicNavBarDe
49514953

49524954
}]);
49534955

4956+
/**
4957+
* ================== angular-ios9-uiwebview.patch.js v1.1.1 ==================
4958+
*
4959+
* This patch works around iOS9 UIWebView regression that causes infinite digest
4960+
* errors in Angular.
4961+
*
4962+
* The patch can be applied to Angular 1.2.0 – 1.4.5. Newer versions of Angular
4963+
* have the workaround baked in.
4964+
*
4965+
* To apply this patch load/bundle this file with your application and add a
4966+
* dependency on the "ngIOS9UIWebViewPatch" module to your main app module.
4967+
*
4968+
* For example:
4969+
*
4970+
* ```
4971+
* angular.module('myApp', ['ngRoute'])`
4972+
* ```
4973+
*
4974+
* becomes
4975+
*
4976+
* ```
4977+
* angular.module('myApp', ['ngRoute', 'ngIOS9UIWebViewPatch'])
4978+
* ```
4979+
*
4980+
*
4981+
* More info:
4982+
* - https://openradar.appspot.com/22186109
4983+
* - https://github.com/angular/angular.js/issues/12241
4984+
* - https://github.com/driftyco/ionic/issues/4082
4985+
*
4986+
*
4987+
* @license AngularJS
4988+
* (c) 2010-2015 Google, Inc. http://angularjs.org
4989+
* License: MIT
4990+
*/
4991+
4992+
angular.module('ngIOS9UIWebViewPatch', ['ng']).config(['$provide', function($provide) {
4993+
'use strict';
4994+
4995+
$provide.decorator('$browser', ['$delegate', '$window', function($delegate, $window) {
4996+
4997+
if (isIOS9UIWebView($window.navigator.userAgent)) {
4998+
return applyIOS9Shim($delegate);
4999+
}
5000+
5001+
return $delegate;
5002+
5003+
function isIOS9UIWebView(userAgent) {
5004+
return /(iPhone|iPad|iPod).* OS 9_\d/.test(userAgent) && !/Version\/9\./.test(userAgent);
5005+
}
5006+
5007+
function applyIOS9Shim(browser) {
5008+
var pendingLocationUrl = null;
5009+
var originalUrlFn = browser.url;
5010+
5011+
browser.url = function() {
5012+
if (arguments.length) {
5013+
pendingLocationUrl = arguments[0];
5014+
return originalUrlFn.apply(browser, arguments);
5015+
}
5016+
5017+
return pendingLocationUrl || originalUrlFn.apply(browser, arguments);
5018+
};
5019+
5020+
window.addEventListener('popstate', clearPendingLocationUrl, false);
5021+
window.addEventListener('hashchange', clearPendingLocationUrl, false);
5022+
5023+
function clearPendingLocationUrl() {
5024+
pendingLocationUrl = null;
5025+
}
5026+
5027+
return browser;
5028+
}
5029+
}]);
5030+
}]);
5031+
49545032
/**
49555033
* @private
49565034
* Parts of Ionic requires that $scope data is attached to the element.
@@ -6396,6 +6474,9 @@ function($scope, $element, $attrs, $compile, $controller, $ionicNavBarDelegate,
63966474
if (viewLocals && viewLocals.$$controller) {
63976475
viewLocals.$scope = viewScope;
63986476
var controller = $controller(viewLocals.$$controller, viewLocals);
6477+
if (viewLocals.$$controllerAs) {
6478+
viewScope[viewLocals.$$controllerAs] = controller;
6479+
}
63996480
$element.children().data('$ngControllerController', controller);
64006481
}
64016482

@@ -8458,7 +8539,7 @@ IonicModule
84588539
* <ion-scroll direction="x" class="available-scroller">
84598540
* <div class="photo" collection-repeat="photo in main.photos"
84608541
* item-height="250" item-width="photo.width + 30">
8461-
* <img ng-src="{{photo.src}}">
8542+
* <img ng-src="{% raw %}{{photo.src}}{% endraw %}">
84628543
* </div>
84638544
* </ion-scroll>
84648545
* </ion-content>
@@ -10124,6 +10205,12 @@ function headerFooterBarDirective(isHeader) {
1012410205
$scope.$watch('$hasTabs', function(val) {
1012510206
$element.toggleClass('has-tabs', !!val);
1012610207
});
10208+
ctrl.align();
10209+
$scope.$on('$ionicFooter.align', function() {
10210+
ionic.requestAnimationFrame(function() {
10211+
ctrl.align();
10212+
});
10213+
});
1012710214
}
1012810215
}
1012910216
}
@@ -10449,7 +10536,7 @@ var ITEM_TPL_OPTION_BUTTONS =
1044910536
* @description
1045010537
* Creates an option button inside a list item, that is visible when the item is swiped
1045110538
* to the left by the user. Swiped open option buttons can be hidden with
10452-
* {@link ionic.service:$ionicListDelegate#closeOptionButtons $ionicListDelegate#closeOptionButtons}.
10539+
* {@link ionic.service:$ionicListDelegate#closeOptionButtons $ionicListDelegate.closeOptionButtons}.
1045310540
*
1045410541
* Can be assigned any button class.
1045510542
*
@@ -11766,13 +11853,16 @@ IonicModule
1176611853
template:
1176711854
'<label class="item item-radio">' +
1176811855
'<input type="radio" name="radio-group">' +
11769-
'<div class="item-content disable-pointer-events" ng-transclude></div>' +
11770-
'<i class="radio-icon disable-pointer-events icon ion-checkmark"></i>' +
11856+
'<div class="radio-content">' +
11857+
'<div class="item-content disable-pointer-events" ng-transclude></div>' +
11858+
'<i class="radio-icon disable-pointer-events icon ion-checkmark"></i>' +
11859+
'</div>' +
1177111860
'</label>',
1177211861

1177311862
compile: function(element, attr) {
1177411863
if (attr.icon) {
11775-
element.children().eq(2).removeClass('ion-checkmark').addClass(attr.icon);
11864+
var iconElm = element.find('i');
11865+
iconElm.removeClass('ion-checkmark').addClass(attr.icon);
1177611866
}
1177711867

1177811868
var input = element.find('input');

release/js/ionic-angular.min.js

Lines changed: 5 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)