UNPKG

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 6.56 kB
/*! * AngularJS Material Design * https://github.com/angular/material * @license MIT * v1.2.0-master-93518bb */ function GridListDirective(g,v,y,w,$){return{restrict:"E",controller:GridListController,scope:{mdOnLayout:"&"},link:function(i,o,f,e){o.addClass("_md"),o.attr("role","list"),e.layoutDelegate=function(t){var r=[].filter.call(o.children(),function(t){return"MD-GRID-TILE"==t.tagName&&!t.$$mdDestroyed}),n={tileSpans:function(t){return[].map.call(t,function(t){var e=angular.element(t).controller("mdGridTile");return{row:parseInt(w.getResponsiveAttribute(e.$attrs,"md-rowspan"),10)||1,col:parseInt(w.getResponsiveAttribute(e.$attrs,"md-colspan"),10)||1}})}(r),colCount:function(){var t=parseInt(w.getResponsiveAttribute(f,"md-cols"),10);if(isNaN(t))throw"md-grid-list: md-cols attribute was not found, or contained a non-numeric value";return t}(),rowMode:d(),rowHeight:function(){var t=w.getResponsiveAttribute(f,"md-row-height");if(!t)throw"md-grid-list: md-row-height attribute was not found";switch(d()){case"fixed":return c(t);case"ratio":var e=t.split(":");return parseFloat(e[0])/parseFloat(e[1]);case"fit":return 0}}(),gutter:c(w.getResponsiveAttribute(f,"md-gutter")||1)};if(!t&&angular.equals(n,a))return;var e=y(n.colCount,n.tileSpans,r).map(function(t,i){return{grid:{element:o,style:function(t,e,i,r,n){var o={};switch(r){case"fixed":o.height=h({unit:n,span:e,gutter:i}),o.paddingBottom="";break;case"ratio":var a=m({share:1/n*(1/t*100),gutterShare:1===t?0:(t-1)/t,gutter:i});o.height="",o.paddingBottom=h({unit:a,span:e,gutter:i})}return o}(n.colCount,i,n.gutter,n.rowMode,n.rowHeight)},tiles:t.map(function(t,e){return{element:angular.element(r[e]),style:function(t,e,i,r,n,o,a){var u=1/i*100,l=(i-1)/i,s=m({share:u,gutterShare:l,gutter:n}),d=$.isRtl(f)?{right:p({unit:s,offset:t.col,gutter:n}),width:h({unit:s,span:e.col,gutter:n}),paddingTop:"",marginTop:"",top:"",height:""}:{left:p({unit:s,offset:t.col,gutter:n}),width:h({unit:s,span:e.col,gutter:n}),paddingTop:"",marginTop:"",top:"",height:""};switch(o){case"fixed":d.top=p({unit:a,offset:t.row,gutter:n}),d.height=h({unit:a,span:e.row,gutter:n});break;case"ratio":var c=u/a,g=m({share:c,gutterShare:l,gutter:n});d.paddingTop=h({unit:g,span:e.row,gutter:n}),d.marginTop=p({unit:g,offset:t.row,gutter:n});break;case"fit":g=m({share:c=1/r*100,gutterShare:(r-1)/r,gutter:n}),d.top=p({unit:g,offset:t.row,gutter:n}),d.height=h({unit:g,span:e.row,gutter:n})}return d}(t.position,t.spans,n.colCount,i,n.gutter,n.rowMode,n.rowHeight)}})}}).reflow().performance();i.mdOnLayout({$event:{performance:e}}),a=n};var a,r=angular.bind(e,e.invalidateLayout),n=function(){for(var t in v.MEDIA)w(t),w.getQuery(v.MEDIA[t]).addListener(r);return w.watchResponsiveAttributes(["md-cols","md-row-height","md-gutter"],f,u)}();function u(t){null==t?e.invalidateLayout():w(t)&&e.invalidateLayout()}i.$on("$destroy",function(){for(var t in e.layoutDelegate=angular.noop,n(),v.MEDIA)w.getQuery(v.MEDIA[t]).removeListener(r)});var l=g.startSymbol(),s=g.endSymbol();function t(t){return l+t+s}var m=g(t("share")+"% - ("+t("gutter")+" * "+t("gutterShare")+")"),p=g("calc(("+t("unit")+" + "+t("gutter")+") * "+t("offset")+")"),h=g("calc(("+t("unit")+") * "+t("span")+" + ("+t("span")+" - 1) * "+t("gutter")+")");function d(){var t=w.getResponsiveAttribute(f,"md-row-height");if(!t)throw"md-grid-list: md-row-height attribute was not found";return"fit"==t?"fit":-1!==t.indexOf(":")?"ratio":"fixed"}function c(t){return/\D$/.test(t)?t:t+"px"}}}}function GridListController(t){this.layoutInvalidated=!1,this.tilesInvalidated=!1,this.$timeout_=t.nextTick,this.layoutDelegate=angular.noop}function GridLayoutFactory(l){var s=e;return t.animateWith=function(t){s=angular.isFunction(t)?t:e},t;function t(t,e){var i,r,n,o,a,u;return o=l.time(function(){r=function(n,t){var o=0,a=0,u=function(){for(var t=[],e=0;e<n;e++)t.push(0);return t}();return{positioning:t.map(function(t,e){return{spans:t,position:function(t,e){if(t.col>n)throw"md-grid-list: Tile at position "+e+" has a colspan ("+t.col+") that exceeds the column count ("+n+")";var i=0,r=0;for(;r-i<t.col;)n<=o?l():-1!==(i=u.indexOf(0,o))&&-1!==(r=d(i+1))?o=r+1:(i=r=0,l());return s(i,t.col,t.row),o=i+t.col,{col:i,row:a}}(t,e)}}),rowCount:a+Math.max.apply(Math,u)};function l(){a++,s(o=0,n,-1)}function s(t,e,i){for(var r=t;r<t+e;r++)u[r]=Math.max(u[r]+i,0)}function d(t){var e;for(e=t;e<u.length;e++)if(0!==u[e])return e;if(e===u.length)return e}}(t,e)}),i={layoutInfo:function(){return r},map:function(e){return a=l.time(function(){var t=i.layoutInfo();n=e(t.positioning,t.rowCount)}),i},reflow:function(t){return u=l.time(function(){(t||s)(n.grid,n.tiles)}),i},performance:function(){return{tileCount:e.length,layoutTime:o,mapTime:a,reflowTime:u,totalTime:o+a+u}}}}function e(t,e){t.element.css(t.style),e.forEach(function(t){t.element.css(t.style)})}}function GridTileDirective(o){return{restrict:"E",require:"^mdGridList",template:"<figure ng-transclude></figure>",transclude:!0,scope:{},controller:["$attrs",function(t){this.$attrs=t}],link:function(t,e,i,r){e.attr("role","listitem");var n=o.watchResponsiveAttributes(["md-colspan","md-rowspan"],i,angular.bind(r,r.invalidateLayout));r.invalidateTiles(),t.$on("$destroy",function(){e[0].$$mdDestroyed=!0,n(),r.invalidateLayout()}),angular.isDefined(t.$parent.$index)&&t.$watch(function(){return t.$parent.$index},function(t,e){t!==e&&r.invalidateTiles()})}}}function GridTileCaptionDirective(){return{template:"<figcaption ng-transclude></figcaption>",transclude:!0}}goog.provide("ngmaterial.components.gridList"),goog.require("ngmaterial.core"),GridListController.$inject=["$mdUtil"],GridLayoutFactory.$inject=["$mdUtil"],GridListDirective.$inject=["$interpolate","$mdConstant","$mdGridLayout","$mdMedia","$mdUtil"],GridTileDirective.$inject=["$mdMedia"],angular.module("material.components.gridList",["material.core"]).directive("mdGridList",GridListDirective).directive("mdGridTile",GridTileDirective).directive("mdGridTileFooter",GridTileCaptionDirective).directive("mdGridTileHeader",GridTileCaptionDirective).factory("$mdGridLayout",GridLayoutFactory),GridListController.prototype={invalidateTiles:function(){this.tilesInvalidated=!0,this.invalidateLayout()},invalidateLayout:function(){this.layoutInvalidated||(this.layoutInvalidated=!0,this.$timeout_(angular.bind(this,this.layout)))},layout:function(){try{this.layoutDelegate(this.tilesInvalidated)}finally{this.layoutInvalidated=!1,this.tilesInvalidated=!1}}},ngmaterial.components.gridList=angular.module("material.components.gridList");