2020-05-19 11:43:42 +03:00

7 lines
3.6 KiB
JavaScript

/*!
* AngularJS Material Design
* https://github.com/angular/material
* @license MIT
* v1.1.18-master-97a1616
*/
function mdRadioGroupDirective(d,u,c,s){return e.prototype={init:function(e){this._ngModelCtrl=e,this._ngModelCtrl.$render=angular.bind(this,this.render)},add:function(e){this._radioButtonRenderFns.push(e)},remove:function(e){var t=this._radioButtonRenderFns.indexOf(e);-1!==t&&this._radioButtonRenderFns.splice(t,1)},render:function(){this._radioButtonRenderFns.forEach(function(e){e()})},setViewValue:function(e,t){this._ngModelCtrl.$setViewValue(e,t),this.render()},getViewValue:function(){return this._ngModelCtrl.$viewValue},selectNext:function(){return t(this.$element,1)},selectPrevious:function(){return t(this.$element,-1)},setActiveDescendant:function(e){this.$element.attr("aria-activedescendant",e)},isDisabled:function(){return this.$element[0].hasAttribute("disabled")}},{restrict:"E",controller:["$element",e],require:["mdRadioGroup","?ngModel"],link:{pre:function(t,i,e,n){i.addClass("_md"),c(i);var o=n[0],r=n[1]||d.fakeNgModel();function a(){i.hasClass("md-focused")||i.addClass("md-focused")}o.init(r),t.mouseActive=!1,i.attr({role:"radiogroup",tabIndex:i.attr("tabindex")||"0"}).on("keydown",function(e){var t=e.which||e.keyCode;if(t==u.KEY_CODE.ENTER||e.currentTarget==e.target)switch(t){case u.KEY_CODE.LEFT_ARROW:case u.KEY_CODE.UP_ARROW:e.preventDefault(),o.selectPrevious(),a();break;case u.KEY_CODE.RIGHT_ARROW:case u.KEY_CODE.DOWN_ARROW:e.preventDefault(),o.selectNext(),a();break;case u.KEY_CODE.ENTER:var n=angular.element(d.getClosest(i[0],"form"));0<n.length&&n.triggerHandler("submit")}}).on("mousedown",function(e){t.mouseActive=!0,s(function(){t.mouseActive=!1},100)}).on("focus",function(){!1===t.mouseActive&&o.$element.addClass("md-focused")}).on("blur",function(){o.$element.removeClass("md-focused")})}}};function e(e){this._radioButtonRenderFns=[],this.$element=e}function t(e,t){var n=d.iterator(e[0].querySelectorAll("md-radio-button"),!0);if(n.count()){var i=e[0].querySelector("md-radio-button.md-checked"),o=n[t<0?"previous":"next"](i,function(e){return!angular.element(e).attr("disabled")})||n.first();angular.element(o).triggerHandler("click")}}}function mdRadioButtonDirective(u,c,s){var l="md-checked";return{restrict:"E",require:"^mdRadioGroup",transclude:!0,template:'<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-off"></div><div class="md-on"></div></div><div ng-transclude class="md-label"></div>',link:function(t,n,i,o){var r;s(n),function(e){e.attr({id:i.id||"radio_"+c.nextUid(),role:"radio","aria-checked":"false"}),u.expectWithText(e,"aria-label")}(n),i.ngValue?c.nextTick(e,!1):e();function e(){if(!o)throw"RadioButton: No RadioGroupController could be found.";o.add(d),i.$observe("value",d),n.on("click",a).on("$destroy",function(){o.remove(d)})}function a(e){n[0].hasAttribute("disabled")||o.isDisabled()||t.$apply(function(){o.setViewValue(i.value,e&&e.type)})}function d(){var e=o.getViewValue()==i.value;e!==r&&("md-radio-group"!==n[0].parentNode.nodeName.toLowerCase()&&n.parent().toggleClass(l,e),e&&o.setActiveDescendant(n.attr("id")),r=e,n.attr("aria-checked",e).toggleClass(l,e))}}}}goog.provide("ngmaterial.components.radioButton"),goog.require("ngmaterial.core"),mdRadioGroupDirective.$inject=["$mdUtil","$mdConstant","$mdTheming","$timeout"],mdRadioButtonDirective.$inject=["$mdAria","$mdUtil","$mdTheming"],angular.module("material.components.radioButton",["material.core"]).directive("mdRadioGroup",mdRadioGroupDirective).directive("mdRadioButton",mdRadioButtonDirective),ngmaterial.components.radioButton=angular.module("material.components.radioButton");