angular-material
Version:
This repository publishes the AngularJS Material v1.x library and localized installs using `npm`. You can find the component source-code for this library in the [AngularJS Material repository](https://github.com/angular/material).
7 lines • 4.92 kB
JavaScript
/*!
* AngularJS Material Design
* https://github.com/angular/material
* @license MIT
* v1.2.0-master-93518bb
*/
!function(e,g){"use strict";function t(t){return{restrict:"E",compile:function(e){return e[0].setAttribute("role","list"),t}}}function n(m,u,f,h){var p=["md-checkbox","md-switch","md-menu"];return{restrict:"E",controller:"MdListController",compile:function(i,r){var e,a,t,n=i[0].querySelectorAll(".md-secondary"),o=i;if(i[0].setAttribute("role","listitem"),r.ngClick||r.ngDblclick||r.ngHref||r.href||r.uiSref||r.ngAttrUiSref)s("button");else if(!i.hasClass("md-no-proxy")){for(var l=0;l<p.length;++l)if(null!==(a=i[0].querySelector(p[l]))){e=!0;break}e?s("div"):i.addClass("md-no-proxy")}function s(e){if("div"===e)(o=g.element('<div class="md-no-style md-list-item-inner">')).append(i.contents()),i.addClass("md-proxy-focus");else{o=g.element('<div class="md-button md-no-style"> <div class="md-list-item-inner"></div></div>');var t=g.element('<md-button class="md-no-style"></md-button>');if(d(i[0],t[0]),!t.attr("aria-label")){t.attr("aria-label",m.getText(i));var n=o[0].querySelector(".md-list-item-inner");n&&n.setAttribute("aria-hidden","true")}i.hasClass("md-no-focus")&&t.addClass("md-no-focus"),o.prepend(t),o.children().eq(1).append(i.contents()),i.addClass("_md-button-wrap")}i[0].setAttribute("tabindex","-1"),i.append(o)}function d(t,n,e){var r=f.prefixer(["ng-if","ng-click","ng-dblclick","aria-label","ng-disabled","ui-sref","href","ng-href","rel","target","ng-attr-ui-sref","ui-sref-opts","download"]);e&&(r=r.concat(f.prefixer(e))),g.forEach(r,function(e){t.hasAttribute(e)&&(n.setAttribute(e,t.getAttribute(e)),t.removeAttribute(e))})}function c(e){for(var t=e.attributes,n=0;n<t.length;n++)if("ngClick"===r.$normalize(t[n].name))return!0;return!1}return t=g.element('<div class="md-secondary-container">'),g.forEach(n,function(e){!function(e,t){if(e&&!function(e){var t=e.nodeName.toUpperCase();return"MD-BUTTON"===t||"BUTTON"===t}(e)&&e.hasAttribute("ng-click")){m.expect(e,"aria-label");var n=g.element('<md-button class="md-secondary md-icon-button">');d(e,n[0],["ng-if","ng-hide","ng-show"]),e.setAttribute("tabindex","-1"),n.append(e),e=n[0]}e&&(!c(e)||!r.ngClick&&function(e){return-1!==p.indexOf(e.nodeName.toLowerCase())}(e))&&g.element(e).removeClass("md-secondary"),i.addClass("md-with-secondary"),t.append(e)}(e,t)}),o.append(t),function(){for(var e,t=["md-switch","md-checkbox"],n=0;n<t.length;++n)if((e=i.find(t[n])[0])&&!e.hasAttribute("aria-label")){var r=i.find("p")[0];if(!(r=r||i.find("span")[0]))return;e.setAttribute("aria-label","Toggle "+r.textContent)}}(),e&&"MD-MENU"===a.nodeName&&function(){var e=g.element(a),t=e.parent().hasClass("md-secondary-container")||a.parentNode.firstElementChild!==a,n="left";t&&(n="right");e.attr("md-position-mode")||e.attr("md-position-mode",n+" target");var r=e.children().eq(0);c(r[0])||r.attr("ng-click","$mdMenu.open($event)");r.attr("aria-label")||r.attr("aria-label","Open List Menu")}(),function(e,a,t,n){a.addClass("_md");var r=[],i=a[0].firstElementChild,o=a.hasClass("_md-button-wrap")?i.firstElementChild:i,l=o&&c(o),s=a.hasClass("md-no-proxy");i&&i.children&&!l&&!s&&g.forEach(p,function(e){g.forEach(i.querySelectorAll(e+":not(.md-secondary)"),function(e){r.push(e)})}),1!==r.length&&!l||(a.addClass("md-clickable"),l||n.attachRipple(e,g.element(a[0].querySelector(".md-no-style")))),r.length&&g.forEach(r,function(t){t=g.element(t),e.mouseActive=!1,t.on("mousedown",function(){e.mouseActive=!0,h(function(){e.mouseActive=!1},100)}).on("focus",function(){!1===e.mouseActive&&a.addClass("md-focused"),t.on("blur",function e(){a.removeClass("md-focused"),t.off("blur",e)})})});function d(e){"INPUT"===e.target.nodeName||"TEXTAREA"===e.target.nodeName||e.target.isContentEditable||(e.which||e.keyCode)===u.KEY_CODE.SPACE&&o&&(o.click(),e.preventDefault(),e.stopPropagation())}l||r.length||o&&o.addEventListener("keypress",d);a.off("click"),a.off("keypress"),a.off("keydown"),1===r.length&&o&&a.children().eq(0).on("click",function(t){(function(e){var t=["md-slider"],n=f.getEventPath(e);if(!n||0===n.length)return-1!==t.indexOf(e.target.tagName.toLowerCase());for(var r=n.indexOf(a.children()[0]),i=0;i<r;i++)if(-1!==t.indexOf(n[i].tagName.toLowerCase()))return!0;return!1})(t)||!f.getClosest(t.target,"BUTTON")&&o.contains(t.target)&&g.forEach(r,function(e){t.target===e||e.contains(t.target)||("MD-MENU"===e.nodeName&&(e=e.children[0]),g.element(e).triggerHandler("click"))})});e.$on("$destroy",function(){o&&o.removeEventListener("keypress",d)})}}}}function r(e,t,n){this.attachRipple=function(e,t){n.attach(e,t,{})}}r.$inject=["$scope","$element","$mdListInkRipple"],t.$inject=["$mdTheming"],n.$inject=["$mdAria","$mdConstant","$mdUtil","$timeout"],g.module("material.components.list",["material.core"]).controller("MdListController",r).directive("mdList",t).directive("mdListItem",n)}(window,window.angular);