summaryrefslogtreecommitdiff
path: root/etc/js/ionRadio.js
diff options
context:
space:
mode:
Diffstat (limited to 'etc/js/ionRadio.js')
-rw-r--r--etc/js/ionRadio.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/etc/js/ionRadio.js b/etc/js/ionRadio.js
new file mode 100644
index 00000000..cb240b76
--- /dev/null
+++ b/etc/js/ionRadio.js
@@ -0,0 +1,55 @@
+/**
+ * ionRadioFix - fixes a bug in iOS 9 UIWebView that breaks the tilde selector in CSS. To
+ * use this fix, include it after your Ionic bundle JS.
+ *
+ * Note: due to Angular directive override limitations, you'll need to change any reference
+ * to <ion-radio> to <ion-radio-fix> to apply this patched radio button.
+ *
+ * Also, make sure to add the new CSS from the second part of this gist.
+ */
+angular.module('ionic').directive('ionRadioFix', function() {
+ return {
+ restrict: 'E',
+ replace: true,
+ require: '?ngModel',
+ transclude: true,
+ template:
+ '<label class="item item-radio">' +
+ '<input type="radio" name="radio-group">' +
+ '<div class="radio-content">' +
+ '<div class="item-content disable-pointer-events" ng-transclude></div>' +
+ '<i class="radio-icon disable-pointer-events icon ion-checkmark"></i>' +
+ '</div>' +
+ '</label>',
+
+ compile: function(element, attr) {
+ if (attr.icon) {
+ var iconElm = element.find('i');
+ iconElm.removeClass('ion-checkmark').addClass(attr.icon);
+ }
+
+ var input = element.find('input');
+ angular.forEach({
+ 'name': attr.name,
+ 'value': attr.value,
+ 'disabled': attr.disabled,
+ 'ng-value': attr.ngValue,
+ 'ng-model': attr.ngModel,
+ 'ng-disabled': attr.ngDisabled,
+ 'ng-change': attr.ngChange,
+ 'ng-required': attr.ngRequired,
+ 'required': attr.required
+ }, function(value, name) {
+ if (angular.isDefined(value)) {
+ input.attr(name, value);
+ }
+ });
+
+ return function(scope, element, attr) {
+ scope.getValue = function() {
+ return scope.ngValue || attr.value;
+ };
+ };
+ }
+ };
+}); \ No newline at end of file