source: trip-planner-front/node_modules/angular-material/modules/js/navBar/navBar.min.js@ 6a3a178

Last change on this file since 6a3a178 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 7.5 KB
Line 
1/*!
2 * AngularJS Material Design
3 * https://github.com/angular/material
4 * @license MIT
5 * v1.2.2-master-0a06f99
6 */
7!function(t,m,c){"use strict";function e(r,s,o,c){return{restrict:"E",transclude:!0,controller:n,controllerAs:"ctrl",bindToController:!0,scope:{mdSelectedNavItem:"=?",mdNoInkBar:"=?",navBarAriaLabel:"@?"},template:'<div class="md-nav-bar"><nav role="navigation"><ul class="_md-nav-bar-list" ng-transclude role="tablist" ng-focus="ctrl.onFocus()" aria-label="{{ctrl.navBarAriaLabel}}"></ul></nav><md-nav-ink-bar ng-hide="ctrl.mdNoInkBar"></md-nav-ink-bar></div>',link:function(t,e,n,i){function a(){i.width!==o.innerWidth&&(i.updateSelectedTabInkBar(),i.width=o.innerWidth,t.$digest())}i.width=o.innerWidth,m.element(o).on("resize",c.debounce(a,300)),t.$on("$destroy",function(){m.element(o).off("resize",a)}),s(e),i.navBarAriaLabel||r.expectAsync(e,"aria-label",m.noop)}}}function n(t,e,n,i){this._$timeout=n,this._$scope=e,this._$mdConstant=i,this.mdSelectedNavItem,this.navBarAriaLabel,this._navBarEl=t[0],this._inkbar;var a=this,r=this._$scope.$watch(function(){return a._navBarEl.querySelectorAll("._md-nav-button").length},function(t){0<t&&(a._initTabs(),r())})}function i(u,t,d,f){return{restrict:"E",require:["mdNavItem","^mdNavBar"],controller:a,bindToController:!0,controllerAs:"ctrl",replace:!0,transclude:!0,template:function(t,e){var n,i,a=e.mdNavClick,r=e.mdNavHref,s=e.mdNavSref,o=e.srefOpts;if(1<(a?1:0)+(r?1:0)+(s?1:0))throw Error("Please do not specify more than one of the md-nav-click, md-nav-href, or md-nav-sref attributes per nav-item directive.");if(a!==c&&null!==a)n='ng-click="ctrl.mdNavClick()"';else if(r!==c&&null!==r)n='ng-href="{{ctrl.mdNavHref}}"';else{if(s===c||null===s)throw Error("Please specify at least one of the md-nav-click, md-nav-href, or md-nav-sref attributes per nav-item directive.");n='ui-sref="{{ctrl.mdNavSref}}"'}return n&&(i='<md-button class="_md-nav-button md-accent" ng-class="ctrl.getNgClassMap()" ng-blur="ctrl.setFocused(false)" ng-disabled="ctrl.disabled" tabindex="-1" role="tab" ng-attr-aria-label="{{ctrl.navItemAriaLabel ? ctrl.navItemAriaLabel : undefined}}" aria-selected="{{ctrl.isSelected()}}" '+(o?'ui-sref-opts="{{ctrl.srefOpts}}" ':"")+n+'><span ng-transclude class="_md-nav-button-text"></span></md-button>'),'<li class="md-nav-item" role="presentation">'+(i||"")+"</li>"},scope:{mdNavClick:"&?",mdNavHref:"@?",mdNavSref:"@?",srefOpts:"=?",name:"@",navItemAriaLabel:"@?"},link:function(n,i,a,r){var s,o,c,l;t(function(){if(o=r[0],c=r[1],l=m.element(i[0].querySelector("._md-nav-button")),o.name||(o.name=m.element(i[0].querySelector("._md-nav-button-text")).text().trim()),l.on("keydown",function(t){c.onKeydown(t)}),l.on("focus",function(){o._focused=!0}),l.on("click",function(){c.mdSelectedNavItem=o.name,n.$apply()}),o.disabled=d.parseAttributeBoolean(a.disabled,!1),"MutationObserver"in f){var t=i[0],e=new MutationObserver(function(t){d.nextTick(function(){o.disabled=d.parseAttributeBoolean(a[t[0].attributeName],!1)})});e.observe(t,{attributes:!0,attributeFilter:["disabled"]}),s=e.disconnect.bind(e)}else a.$observe("disabled",function(t){o.disabled=d.parseAttributeBoolean(t,!1)});o.navItemAriaLabel||u.expectWithText(l,"aria-label")}),n.$on("destroy",function(){l.off("keydown"),l.off("focus"),l.off("click"),s()})}}}function a(t){this._$element=t,this.mdNavClick,this.mdNavHref,this.mdNavSref,this.srefOpts,this.name,this.navItemAriaLabel,this._selected=!1,this.isFocused=!1}e.$inject=["$mdAria","$mdTheming","$window","$mdUtil"],n.$inject=["$element","$scope","$timeout","$mdConstant"],i.$inject=["$mdAria","$$rAF","$mdUtil","$window"],a.$inject=["$element"],m.module("material.components.navBar",["material.core"]).controller("MdNavBarController",n).directive("mdNavBar",e).controller("MdNavItemController",a).directive("mdNavItem",i),n.prototype._initTabs=function(){this._inkbar=m.element(this._navBarEl.querySelector("md-nav-ink-bar"));var n=this;this._$timeout(function(){n._updateTabs(n.mdSelectedNavItem,null)}),this._$scope.$watch("ctrl.mdSelectedNavItem",function(t,e){n._$timeout(function(){n._updateTabs(t,e)})})},n.prototype._updateTabs=function(t,e){var n=this,i=this._getTabs(),a=t===e;if(i){var r=-1,s=this._getTabByName(t),o=this._getTabByName(e);o&&o.setSelected(!1),s&&(s.setSelected(!0),r=i.indexOf(s)),this._$timeout(function(){n._updateInkBarStyles(s,r),s&&o&&!a&&n._moveFocus(o,s)})}},n.prototype._updateInkBarStyles=function(t,e){if(this._inkbar.css({display:e<0?"none":""}),t){var n=t.getButtonEl(),i=n.offsetLeft,a=n.offsetWidth,r=this._navBarEl.getBoundingClientRect().width,s=a/r,o=i/r*100;this._inkbar.css({transform:"translateX("+o+"%) scaleX("+s+")"})}},n.prototype.updateSelectedTabInkBar=function(){this._updateInkBarStyles(this._getSelectedTab())},n.prototype._getTabs=function(){var t=Array.prototype.slice.call(this._navBarEl.querySelectorAll(".md-nav-item")).map(function(t){return m.element(t).controller("mdNavItem")});return t.indexOf(c)?t:[]},n.prototype._getTabByName=function(e){return this._findTab(function(t){return t.getName()===e})},n.prototype._getSelectedTab=function(){return this._findTab(function(t){return t.isSelected()})},n.prototype.getFocusedTab=function(){return this._findTab(function(t){return t.hasFocus()})},n.prototype._findTab=function(t,e){var n,i=this._getTabs();for(null==e&&(e=0),n=e;n<i.length;n++)if(t(i[n]))return i[n];return null},n.prototype._findTabReverse=function(t,e){var n=this._getTabs();e!==c&&null!==e||(e=n.length-1);for(var i=e;0<=i;i--)if(t(n[i]))return n[i];return null},n.prototype.onFocus=function(){var t=this._getSelectedTab();t&&!t.isFocused&&t.setFocused(!0)},n.prototype._moveFocus=function(t,e){t.setFocused(!1),e.setFocused(!0)},n.prototype._focusFirstTab=function(){if(this._getTabs()){var t=this._findTab(function(t){return t._isEnabled()});t&&this._moveFocus(this.getFocusedTab(),t)}},n.prototype._focusLastTab=function(){if(this._getTabs()){var t=this._findTabReverse(function(t){return t._isEnabled()});t&&this._moveFocus(this.getFocusedTab(),t)}},n.prototype._focusNextTab=function(t){if(this._getTabs()){var e=this._findTab(function(t){return t._isEnabled()},t+1);e?this._moveFocus(this.getFocusedTab(),e):this._focusFirstTab()}},n.prototype._focusPreviousTab=function(t){if(this._getTabs()){var e=this._findTabReverse(function(t){return t._isEnabled()},t-1);e?this._moveFocus(this.getFocusedTab(),e):this._focusLastTab()}},n.prototype.onKeydown=function(t){var e=this._$mdConstant.KEY_CODE,n=this._getTabs(),i=this.getFocusedTab();if(i&&n){var a=n.indexOf(i);switch(t.keyCode){case e.UP_ARROW:case e.LEFT_ARROW:t.preventDefault(),this._focusPreviousTab(a);break;case e.DOWN_ARROW:case e.RIGHT_ARROW:t.preventDefault(),this._focusNextTab(a);break;case e.SPACE:case e.ENTER:this._$timeout(function(){i.getButtonEl().click()});break;case e.HOME:t.preventDefault(),this._focusFirstTab();break;case e.END:t.preventDefault(),this._focusLastTab()}}},a.prototype.getNgClassMap=function(){return{"md-active":this._selected,"md-primary":this._selected,"md-unselected":!this._selected,"md-focused":this.isFocused}},a.prototype.getName=function(){return this.name},a.prototype.getButtonEl=function(){return this._$element[0].querySelector("._md-nav-button")},a.prototype.setSelected=function(t){(this._selected=t)?this.getButtonEl().setAttribute("tabindex","0"):this.getButtonEl().setAttribute("tabindex","-1")},a.prototype.isSelected=function(){return this._selected},a.prototype.setFocused=function(t){(this.isFocused=t)&&this.getButtonEl().focus()},a.prototype.hasFocus=function(){return this.isFocused},a.prototype._isEnabled=function(){return!this._$element.attr("disabled")}}(window,window.angular);
Note: See TracBrowser for help on using the repository browser.