suh-dgeni-ngdocs
Version:
A package to generate ng-docs similar to what is used on AngularJS website.
1 lines • 3.21 kB
JavaScript
!function(a,i,r){"use strict";function e(){function a(a,i,e){return function(t,n,c){var u=c.$normalize(i);r[u]&&!c[u]&&t.$watch(c[a],function(a){e&&(a=!a),n.attr(i,a)})}}var r={ariaHidden:!0,ariaChecked:!0,ariaDisabled:!0,ariaRequired:!0,ariaInvalid:!0,ariaMultiline:!0,ariaValue:!0,tabindex:!0,bindKeypress:!0};this.config=function(a){r=i.extend(r,a)},this.$get=function(){return{config:function(a){return r[a]},$$watchExpr:a}}}var t=i.module("ngAria",["ng"]).provider("$aria",e);t.directive("ngShow",["$aria",function(a){return a.$$watchExpr("ngShow","aria-hidden",!0)}]).directive("ngHide",["$aria",function(a){return a.$$watchExpr("ngHide","aria-hidden",!1)}]).directive("ngModel",["$aria",function(a){function i(i,r,e){return a.config(r)&&!e.attr(i)}function r(a,i){return!i.attr("role")&&i.attr("type")===a&&"INPUT"!==i[0].nodeName}function e(a,i){var r=a.type,e=a.role;return"checkbox"===(r||e)||"menuitemcheckbox"===e?"checkbox":"radio"===(r||e)||"menuitemradio"===e?"radio":"range"===r||"progressbar"===e||"slider"===e?"range":"textbox"===(r||e)||"TEXTAREA"===i[0].nodeName?"multiline":""}return{restrict:"A",require:"?ngModel",priority:200,link:function(t,n,c,u){function o(){return u.$modelValue}function d(){return s?(s=!1,function(a){var i=c.value==u.$viewValue;n.attr("aria-checked",i),n.attr("tabindex",0-!i)}):function(a){n.attr("aria-checked",c.value==u.$viewValue)}}function l(a){n.attr("aria-checked",!u.$isEmpty(u.$viewValue))}var f=e(c,n),s=i("tabindex","tabindex",n);switch(f){case"radio":case"checkbox":r(f,n)&&n.attr("role",f),i("aria-checked","ariaChecked",n)&&t.$watch(o,"radio"===f?d():l);break;case"range":r(f,n)&&n.attr("role","slider"),a.config("ariaValue")&&(c.min&&!n.attr("aria-valuemin")&&n.attr("aria-valuemin",c.min),c.max&&!n.attr("aria-valuemax")&&n.attr("aria-valuemax",c.max),n.attr("aria-valuenow")||t.$watch(o,function(a){n.attr("aria-valuenow",a)}));break;case"multiline":i("aria-multiline","ariaMultiline",n)&&n.attr("aria-multiline",!0)}s&&n.attr("tabindex",0),u.$validators.required&&i("aria-required","ariaRequired",n)&&t.$watch(function(){return u.$error.required},function(a){n.attr("aria-required",!!a)}),i("aria-invalid","ariaInvalid",n)&&t.$watch(function(){return u.$invalid},function(a){n.attr("aria-invalid",!!a)})}}}]).directive("ngDisabled",["$aria",function(a){return a.$$watchExpr("ngDisabled","aria-disabled")}]).directive("ngMessages",function(){return{restrict:"A",require:"?ngMessages",link:function(a,i,r,e){i.attr("aria-live")||i.attr("aria-live","assertive")}}}).directive("ngClick",["$aria","$parse",function(a,i){return{restrict:"A",compile:function(r,e){var t=i(e.ngClick,null,!0);return function(i,r,e){function n(a,i){return-1!==i.indexOf(a[0].nodeName)?!0:void 0}var c=["BUTTON","A","INPUT","TEXTAREA"];r.attr("role")||n(r,c)||r.attr("role","button"),a.config("tabindex")&&!r.attr("tabindex")&&r.attr("tabindex",0),!a.config("bindKeypress")||e.ngKeypress||n(r,c)||r.on("keypress",function(a){function r(){t(i,{$event:a})}(32===a.keyCode||13===a.keyCode)&&i.$apply(r)})}}}}]).directive("ngDblclick",["$aria",function(a){return function(i,r,e){a.config("tabindex")&&!r.attr("tabindex")&&r.attr("tabindex",0)}}])}(window,window.angular);