7 lines
14 KiB
JavaScript
7 lines
14 KiB
JavaScript
/*!
|
|
* Angular Material Design
|
|
* https://github.com/angular/material
|
|
* @license MIT
|
|
* v0.10.0
|
|
*/
|
|
!function(e,t,n){"use strict";function a(){function e(e,n,a,s){if(s){var d=n.parent()[0].getElementsByTagName("md-tab"),i=Array.prototype.indexOf.call(d,n[0]),o=n.find("md-tab-body").eq(0).remove(),c=n.find("md-tab-label").eq(0).remove(),r=s.insertTab({scope:e,parent:e.$parent,index:i,element:n,template:o.html(),label:c.html()},i);e.select=e.select||t.noop,e.deselect=e.deselect||t.noop,e.$watch("active",function(e){e&&s.select(r.getIndex())}),e.$watch("disabled",function(){s.refreshIndex()}),e.$watch(function(){return Array.prototype.indexOf.call(d,n[0])},function(e){r.index=e,s.updateTabOrder()}),e.$on("$destroy",function(){s.removeTab(r)})}}return{require:"^?mdTabs",terminal:!0,template:function(e,t){function n(){function n(){return t.label}function a(){var t=e.find("md-tab-label").eq(0);return t.length?t.remove().html():void 0}function s(){var t=e.html();return e.empty(),t}return a()||n()||s()}function a(){var n=e.find("md-tab-body").eq(0),a=n.length?n.html():t.label?e.html():"";return n.length?n.remove():t.label&&e.empty(),a}var s=n(),d=a();return"<md-tab-label>"+s+"</md-tab-label><md-tab-body>"+d+"</md-tab-body>"},scope:{active:"=?mdActive",disabled:"=?ngDisabled",select:"&?mdOnSelect",deselect:"&?mdOnDeselect"},link:e}}function s(){return{require:"^?mdTabs",link:function(e,t,n,a){a&&a.attachRipple(e,t)}}}function d(){return{terminal:!0}}function i(e){return{restrict:"A",compile:function(t,n){var a=e(n.mdTabScroll,null,!0);return function(e,t){t.on("mousewheel",function(t){e.$apply(function(){a(e,{$event:t})})})}}}}function o(e,n,a,s,d,i,o,c,r,l,m){function f(){e.selectedIndex=e.selectedIndex||0,b(),p(),u(),m(n),s(function(){Y(),_(),R(),V.tabs[e.selectedIndex]&&V.tabs[e.selectedIndex].scope.select(),ne=!0})}function b(){var e=r.$mdTabsTemplate,n=t.element(Z.data);n.html(e),l(n.contents())(V.parent),delete r.$mdTabsTemplate}function u(){t.element(a).on("resize",S),t.element(Z.paging).on("DOMSubtreeModified",V.updateInkBarStyles),t.element(Z.paging).on("DOMSubtreeModified",R)}function p(){o.initOptionalProperties(e,r),r.$observe("mdNoBar",function(n){e.noInkBar=t.isDefined(n)}),e.$watch("selectedIndex",T),e.$watch("dynamicHeight",function(e){e?n.addClass("md-dynamic-height"):n.removeClass("md-dynamic-height")}),e.$on("$destroy",h)}function h(){te=!0,t.element(a).off("resize",S),t.element(Z.paging).off("DOMSubtreeModified",V.updateInkBarStyles),t.element(Z.paging).off("DOMSubtreeModified",R)}function g(e){n[e?"removeClass":"addClass"]("md-no-tab-content")}function x(n){var a=V.shouldCenterTabs?"":"-"+n+"px";t.element(Z.paging).css(d.CSS.TRANSFORM,"translate3d("+a+", 0, 0)"),e.$broadcast("$mdTabsPaginationChanged")}function v(e,t){e!==t&&Z.tabs[e]&&(_(),q())}function T(t,n){t!==n&&(e.selectedIndex=M(t),V.lastSelectedIndex=n,V.updateInkBarStyles(),Y(),_(t),e.$broadcast("$mdTabsChanged"),V.tabs[n]&&V.tabs[n].scope.deselect(),V.tabs[t]&&V.tabs[t].scope.select())}function $(){$.watcher||($.watcher=e.$watch(function(){s(function(){$.watcher&&n.prop("offsetParent")&&($.watcher(),$.watcher=null,S())},0,!1)}))}function I(t){switch(t.keyCode){case d.KEY_CODE.LEFT_ARROW:t.preventDefault(),H(-1,!0);break;case d.KEY_CODE.RIGHT_ARROW:t.preventDefault(),H(1,!0);break;case d.KEY_CODE.SPACE:case d.KEY_CODE.ENTER:t.preventDefault(),X||(e.selectedIndex=V.focusIndex)}V.lastClick=!1}function C(t){X||(V.focusIndex=e.selectedIndex=t),V.lastClick=!0,V.tabs[t].element.triggerHandler("click")}function w(e){V.shouldPaginate&&(e.preventDefault(),V.offsetLeft=J(V.offsetLeft-e.wheelDelta))}function y(){var e,t,n=Z.canvas.clientWidth,a=n+V.offsetLeft;for(e=0;e<Z.tabs.length&&(t=Z.tabs[e],!(t.offsetLeft+t.offsetWidth>a));e++);V.offsetLeft=J(t.offsetLeft)}function k(){var e,t;for(e=0;e<Z.tabs.length&&(t=Z.tabs[e],!(t.offsetLeft+t.offsetWidth>=V.offsetLeft));e++);V.offsetLeft=J(t.offsetLeft+t.offsetWidth-Z.canvas.clientWidth)}function S(){e.$apply(function(){V.lastSelectedIndex=e.selectedIndex,V.offsetLeft=J(V.offsetLeft),s(V.updateInkBarStyles,0,!1),s(R)})}function P(t){var n=e.selectedIndex,a=V.tabs.splice(t.getIndex(),1)[0];U(),e.selectedIndex!==n||te||(a.scope.deselect(),V.tabs[e.selectedIndex]&&V.tabs[e.selectedIndex].scope.select()),s(function(){R(),V.offsetLeft=J(V.offsetLeft)})}function L(n,a){var d={getIndex:function(){return V.tabs.indexOf(i)},isActive:function(){return this.getIndex()===e.selectedIndex},isLeft:function(){return this.getIndex()<e.selectedIndex},isRight:function(){return this.getIndex()>e.selectedIndex},shouldRender:function(){return!e.noDisconnect||this.isActive()},hasFocus:function(){return!V.lastClick&&V.hasFocus&&this.getIndex()===V.focusIndex},id:o.nextUid()},i=t.extend(d,n);return t.isDefined(a)?V.tabs.splice(a,0,i):V.tabs.push(i),j(),K(),ne&&e.autoselect&&s(function(){C(V.tabs.indexOf(i))}),s(R),i}function B(){var e={};return e.wrapper=n[0].getElementsByTagName("md-tabs-wrapper")[0],e.data=n[0].getElementsByTagName("md-tab-data")[0],e.canvas=e.wrapper.getElementsByTagName("md-tabs-canvas")[0],e.paging=e.canvas.getElementsByTagName("md-pagination-wrapper")[0],e.tabs=e.paging.getElementsByTagName("md-tab-item"),e.dummies=e.canvas.getElementsByTagName("md-dummy-tab"),e.inkBar=e.paging.getElementsByTagName("md-ink-bar")[0],e.contentsWrapper=n[0].getElementsByTagName("md-tabs-content-wrapper")[0],e.contents=e.contentsWrapper.getElementsByTagName("md-tab-content"),e}function E(){return V.offsetLeft>0}function D(){var e=Z.tabs[Z.tabs.length-1];return e&&e.offsetLeft+e.offsetWidth>Z.canvas.clientWidth+V.offsetLeft}function O(){switch(e.stretchTabs){case"always":return!0;case"never":return!1;default:return!V.shouldPaginate&&a.matchMedia("(max-width: 600px)").matches}}function W(){return e.centerTabs&&!V.shouldPaginate}function A(){if(e.noPagination||!ne)return!1;var a=n.prop("clientWidth");return t.forEach(Z.dummies,function(e){a-=e.offsetWidth}),0>a}function M(e){var t,n,a=Math.max(V.tabs.length-e,e);for(t=0;a>=t;t++){if(n=V.tabs[e+t],n&&n.scope.disabled!==!0)return n.getIndex();if(n=V.tabs[e-t],n&&n.scope.disabled!==!0)return n.getIndex()}return e}function N(e,t,n){Object.defineProperty(V,e,{get:function(){return n},set:function(e){var a=n;n=e,t(e,a)}})}function R(){V.shouldPaginate=A(),V.shouldCenterTabs=W(),s(function(){_(e.selectedIndex)})}function F(){var t=V.tabs[e.selectedIndex],n=V.tabs[V.focusIndex];V.tabs=V.tabs.sort(function(e,t){return e.index-t.index}),e.selectedIndex=V.tabs.indexOf(t),V.focusIndex=V.tabs.indexOf(n)}function H(e){var t,n=V.focusIndex;for(t=n+e;V.tabs[t]&&V.tabs[t].scope.disabled;t+=e);V.tabs[t]&&(V.focusIndex=t)}function q(){Z.dummies[V.focusIndex].focus()}function _(e){if(!V.shouldCenterTabs){null==e&&(e=V.focusIndex);var t=Z.tabs[e],n=t.offsetLeft,a=t.offsetWidth+n;V.offsetLeft=Math.max(V.offsetLeft,J(a-Z.canvas.clientWidth)),V.offsetLeft=Math.min(V.offsetLeft,J(n))}}function j(){ee.forEach(function(e){s(e)}),ee=[]}function K(){var e=!1;t.forEach(V.tabs,function(t){t.template&&(e=!0)}),V.hasContent=e}function U(){e.selectedIndex=M(e.selectedIndex),V.focusIndex=M(V.focusIndex)}function Y(){if(!e.dynamicHeight)return n.css("height","");if(!V.tabs.length)return ee.push(Y);var t=Z.contents[e.selectedIndex],a=t?t.offsetHeight:0,s=Z.wrapper.offsetHeight,d=a+s,i=n.prop("clientHeight");i!==d&&(X=!0,c.animate(n,{height:i+"px"},{height:d+"px"}).then(function(){n.css("height",""),X=!1}))}function z(){if(Z.tabs[e.selectedIndex]){if(!V.tabs.length)return ee.push(V.updateInkBarStyles);if(!n.prop("offsetParent"))return $();var a=e.selectedIndex,s=Z.paging.offsetWidth,d=Z.tabs[a],i=d.offsetLeft,o=s-i-d.offsetWidth;G(),t.element(Z.inkBar).css({left:i+"px",right:o+"px"})}}function G(){var n=e.selectedIndex,a=V.lastSelectedIndex,s=t.element(Z.inkBar);t.isNumber(a)&&(a>n?s.addClass("md-left").removeClass("md-right"):n>a&&s.addClass("md-right").removeClass("md-left"))}function J(e){if(!Z.tabs.length||!V.shouldPaginate)return 0;var t=Z.tabs[Z.tabs.length-1],n=t.offsetLeft+t.offsetWidth;return e=Math.max(0,e),e=Math.min(n-Z.canvas.clientWidth,e)}function Q(e,n){var a={colorElement:t.element(Z.inkBar)};i.attach(e,n,a)}var V=this,X=!1,Z=B(),ee=[],te=!1,ne=!1;N("focusIndex",v,e.selectedIndex||0),N("offsetLeft",x,0),N("hasContent",g,!1),V.scope=e,V.parent=e.$parent,V.tabs=[],V.lastSelectedIndex=null,V.hasFocus=!1,V.lastClick=!0,V.shouldPaginate=!1,V.shouldCenterTabs=W(),V.redirectFocus=q,V.attachRipple=Q,V.shouldStretchTabs=O,V.insertTab=L,V.removeTab=P,V.select=C,V.scroll=w,V.nextPage=y,V.previousPage=k,V.keydown=I,V.canPageForward=D,V.canPageBack=E,V.refreshIndex=U,V.incrementSelectedIndex=H,V.updateInkBarStyles=o.debounce(z,100),V.updateTabOrder=o.debounce(F,100),f()}function c(e,t,n){return{scope:{noPagination:"=?mdNoPagination",dynamicHeight:"=?mdDynamicHeight",centerTabs:"=?mdCenterTabs",selectedIndex:"=?mdSelected",stretchTabs:"@?mdStretchTabs",swipeContent:"=?mdSwipeContent",noDisconnect:"=?mdNoDisconnect",autoselect:"=?mdAutoselect"},template:function(e,t){return t.$mdTabsTemplate=e.html(),' <md-tabs-wrapper ng-class="{ \'md-stretch-tabs\': $mdTabsCtrl.shouldStretchTabs() }"> <md-tab-data></md-tab-data> <md-prev-button tabindex="-1" role="button" aria-label="Previous Page" aria-disabled="{{!$mdTabsCtrl.canPageBack()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageBack() }" ng-if="$mdTabsCtrl.shouldPaginate" ng-click="$mdTabsCtrl.previousPage()"> <md-icon md-svg-icon="md-tabs-arrow"></md-icon> </md-prev-button> <md-next-button tabindex="-1" role="button" aria-label="Next Page" aria-disabled="{{!$mdTabsCtrl.canPageForward()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageForward() }" ng-if="$mdTabsCtrl.shouldPaginate" ng-click="$mdTabsCtrl.nextPage()"> <md-icon md-svg-icon="md-tabs-arrow"></md-icon> </md-next-button> <md-tabs-canvas tabindex="0" aria-activedescendant="tab-item-{{$mdTabsCtrl.tabs[$mdTabsCtrl.focusIndex].id}}" ng-focus="$mdTabsCtrl.redirectFocus()" ng-class="{ \'md-paginated\': $mdTabsCtrl.shouldPaginate, \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" ng-keydown="$mdTabsCtrl.keydown($event)" role="tablist"> <md-pagination-wrapper ng-class="{ \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" md-tab-scroll="$mdTabsCtrl.scroll($event)"> <md-tab-item tabindex="-1" class="md-tab" style="max-width: {{ tabWidth ? tabWidth + \'px\' : \'none\' }}" ng-repeat="tab in $mdTabsCtrl.tabs" role="tab" aria-controls="tab-content-{{tab.id}}" aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-click="$mdTabsCtrl.select(tab.getIndex())" ng-class="{ \'md-active\': tab.isActive(), \'md-focused\': tab.hasFocus(), \'md-disabled\': tab.scope.disabled }" ng-disabled="tab.scope.disabled" md-swipe-left="$mdTabsCtrl.nextPage()" md-swipe-right="$mdTabsCtrl.previousPage()" md-template="tab.label" md-scope="tab.parent"></md-tab-item> <md-ink-bar ng-hide="noInkBar"></md-ink-bar> </md-pagination-wrapper> <div class="md-visually-hidden md-dummy-wrapper"> <md-dummy-tab class="md-tab" tabindex="-1" id="tab-item-{{tab.id}}" role="tab" aria-controls="tab-content-{{tab.id}}" aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-focus="$mdTabsCtrl.hasFocus = true" ng-blur="$mdTabsCtrl.hasFocus = false" ng-repeat="tab in $mdTabsCtrl.tabs" md-template="tab.label" md-scope="tab.parent"></md-dummy-tab> </div> </md-tabs-canvas> </md-tabs-wrapper> <md-tabs-content-wrapper ng-show="$mdTabsCtrl.hasContent"> <md-tab-content id="tab-content-{{tab.id}}" role="tabpanel" aria-labelledby="tab-item-{{tab.id}}" md-swipe-left="swipeContent && $mdTabsCtrl.incrementSelectedIndex(1)" md-swipe-right="swipeContent && $mdTabsCtrl.incrementSelectedIndex(-1)" ng-if="$mdTabsCtrl.hasContent" ng-repeat="(index, tab) in $mdTabsCtrl.tabs" md-connected-if="tab.isActive()" ng-class="{ \'md-no-transition\': $mdTabsCtrl.lastSelectedIndex == null, \'md-active\': tab.isActive(), \'md-left\': tab.isLeft(), \'md-right\': tab.isRight(), \'md-no-scroll\': dynamicHeight }"> <div md-template="tab.template" md-scope="tab.parent" ng-if="tab.shouldRender()"></div> </md-tab-content> </md-tabs-content-wrapper> '},controller:"MdTabsController",controllerAs:"$mdTabsCtrl"}}function r(e,t,n){function a(a,s,d,i){function o(){a.$watch("connected",function(e){e===!1?c():r()}),a.$on("$destroy",r)}function c(){i.scope.noDisconnect||t.disconnectScope(l)}function r(){i.scope.noDisconnect||t.reconnectScope(l)}if(i){var l=a.compileScope.$new();return s.html(a.template),e(s.contents())(l),n(o)}}return{restrict:"A",link:a,scope:{template:"=mdTemplate",compileScope:"=mdScope",connected:"=?mdConnectedIf"},require:"^?mdTabs"}}t.module("material.components.tabs",["material.core","material.components.icon"]),t.module("material.components.tabs").directive("mdTab",a),t.module("material.components.tabs").directive("mdTabItem",s),t.module("material.components.tabs").directive("mdTabLabel",d),t.module("material.components.tabs").directive("mdTabScroll",i),i.$inject=["$parse"],t.module("material.components.tabs").controller("MdTabsController",o),o.$inject=["$scope","$element","$window","$timeout","$mdConstant","$mdTabInkRipple","$mdUtil","$animate","$attrs","$compile","$mdTheming"],t.module("material.components.tabs").directive("mdTabs",c),c.$inject=["$mdTheming","$mdUtil","$compile"],t.module("material.components.tabs").directive("mdTemplate",r),r.$inject=["$compile","$mdUtil","$timeout"]}(window,window.angular); |