From 4e75b1b5919d2f2884b7144d0e4a7a9d7ac29afa Mon Sep 17 00:00:00 2001 From: Max Lynch Date: Thu, 5 Dec 2013 12:48:20 -0600 Subject: [PATCH] yay --- dist/css/ionic.css | 1 + dist/css/themes/ionic-ios7.css | 1 + dist/js/ionic-angular.js | 54 ++++++++++++++-------- js/ext/angular/src/directive/ionicRadio.js | 54 ++++++++++++++-------- 4 files changed, 74 insertions(+), 36 deletions(-) diff --git a/dist/css/ionic.css b/dist/css/ionic.css index 2a3f7c72a0..3243f51b84 100644 --- a/dist/css/ionic.css +++ b/dist/css/ionic.css @@ -1,3 +1,4 @@ +@charset "UTF-8"; /*! * Copyright 2013 Drifty Co. * http://drifty.com/ diff --git a/dist/css/themes/ionic-ios7.css b/dist/css/themes/ionic-ios7.css index 23bcd03921..1e5a055c50 100644 --- a/dist/css/themes/ionic-ios7.css +++ b/dist/css/themes/ionic-ios7.css @@ -1,3 +1,4 @@ +@charset "UTF-8"; /*! * Copyright 2013 Drifty Co. * http://drifty.com/ diff --git a/dist/js/ionic-angular.js b/dist/js/ionic-angular.js index ec57c7d502..944cc95f75 100644 --- a/dist/js/ionic-angular.js +++ b/dist/js/ionic-angular.js @@ -1493,37 +1493,55 @@ angular.module('ionic.ui.radio', []) link: function($scope, $element, $attr, ngModel) { var radio; - if(!ngModel) { return; } - - radio = $element.children().eq(0); - - if(!radio.length) { return; } - - $scope.tapHandler = function(e) { - radio[0].checked = true; - ngModel.$setViewValue($scope.$eval($attr.ngValue)); - e.alreadyHandled = true; - }; - - var clickHandler = function(e) { - ngModel.$setViewValue($scope.$eval($attr.ngValue)); - }; if(ngModel) { //$element.bind('tap', tapHandler); - $element.bind('click', clickHandler); ngModel.$render = function() { var val = $scope.$eval($attr.ngValue); if(val === ngModel.$viewValue) { - radio.attr('checked', 'checked'); } else { - radio.removeAttr('checked'); } }; + $scope.$parent.$on('button.toggled', function(e, element) { + var c, children = $element.children(); + for(var i = 0; i < children.length; i++) { + c = children[i]; + if(c != element[0]) { + c.classList.remove('active'); + } + } + }); } } }; +}) + +.directive('button', function() { + return { + restrict: 'E', + require: '?^ngModel', + link: function($scope, $element, $attr, ngModel) { + if(!ngModel) { return; } + + var setIt = function() { + $element.addClass('active'); + ngModel.$setViewValue($scope.$eval($attr.ngValue)); + $scope.$emit('button.toggled', $element); + }; + + $scope.tapHandler = function(e) { + setIt(); + e.alreadyHandled = true; + }; + + var clickHandler = function(e) { + setIt(); + }; + + $element.bind('click', clickHandler); + } + } }); })(window.ionic); diff --git a/js/ext/angular/src/directive/ionicRadio.js b/js/ext/angular/src/directive/ionicRadio.js index dc8400053d..ae50cec33c 100644 --- a/js/ext/angular/src/directive/ionicRadio.js +++ b/js/ext/angular/src/directive/ionicRadio.js @@ -73,37 +73,55 @@ angular.module('ionic.ui.radio', []) link: function($scope, $element, $attr, ngModel) { var radio; - if(!ngModel) { return; } - - radio = $element.children().eq(0); - - if(!radio.length) { return; } - - $scope.tapHandler = function(e) { - radio[0].checked = true; - ngModel.$setViewValue($scope.$eval($attr.ngValue)); - e.alreadyHandled = true; - }; - - var clickHandler = function(e) { - ngModel.$setViewValue($scope.$eval($attr.ngValue)); - }; if(ngModel) { //$element.bind('tap', tapHandler); - $element.bind('click', clickHandler); ngModel.$render = function() { var val = $scope.$eval($attr.ngValue); if(val === ngModel.$viewValue) { - radio.attr('checked', 'checked'); } else { - radio.removeAttr('checked'); } }; + $scope.$parent.$on('button.toggled', function(e, element) { + var c, children = $element.children(); + for(var i = 0; i < children.length; i++) { + c = children[i]; + if(c != element[0]) { + c.classList.remove('active'); + } + } + }); } } }; +}) + +.directive('button', function() { + return { + restrict: 'E', + require: '?^ngModel', + link: function($scope, $element, $attr, ngModel) { + if(!ngModel) { return; } + + var setIt = function() { + $element.addClass('active'); + ngModel.$setViewValue($scope.$eval($attr.ngValue)); + $scope.$emit('button.toggled', $element); + }; + + $scope.tapHandler = function(e) { + setIt(); + e.alreadyHandled = true; + }; + + var clickHandler = function(e) { + setIt(); + }; + + $element.bind('click', clickHandler); + } + } }); })(window.ionic);