(js/css) Update generated files

This commit is contained in:
InverseBot
2017-06-30 01:28:54 -04:00
parent fa7aba89c2
commit 14b902241d
10 changed files with 464 additions and 283 deletions
+263 -81
View File
@@ -2,7 +2,7 @@
* AngularJS Material Design
* https://github.com/angular/material
* @license MIT
* v1.1.4-master-e1345ae
* v1.1.4-master-75237c6
*/
(function( window, angular, undefined ){
"use strict";
@@ -2600,7 +2600,7 @@ attachToDocument.$inject = ["$mdGesture", "$$MdGestureHandler"];var HANDLERS = {
* as well as other information abstracted from the DOM.
*/
var pointer, lastPointer, forceSkipClickHijack = false;
var pointer, lastPointer, forceSkipClickHijack = false, maxClickDistance = 6;
/**
* The position of the most recent click if that click was on a label element.
@@ -2615,7 +2615,7 @@ angular
.module('material.core.gestures', [ ])
.provider('$mdGesture', MdGestureProvider)
.factory('$$MdGestureHandler', MdGestureHandler)
.run( attachToDocument );
.run(attachToDocument );
/**
* @ngdoc service
@@ -2626,6 +2626,7 @@ angular
* In some scenarios on Mobile devices (without jQuery), the click events should NOT be hijacked.
* `$mdGestureProvider` is used to configure the Gesture module to ignore or skip click hijacking on mobile
* devices.
* You can also change max click distance (6px by default) if you have issues on some touch screens.
*
* <hljs lang="js">
* app.config(function($mdGestureProvider) {
@@ -2634,6 +2635,9 @@ angular
* // intercept click events during the capture phase.
* $mdGestureProvider.skipClickHijack();
*
* // If hijcacking clicks, change default 6px click distance
* $mdGestureProvider.setMaxClickDistance(12);
*
* });
* </hljs>
*
@@ -2648,6 +2652,10 @@ MdGestureProvider.prototype = {
return forceSkipClickHijack = true;
},
setMaxClickDistance: function(clickDistance) {
maxClickDistance = parseInt(clickDistance);
},
/**
* $get is used to build an instance of $mdGesture
* @ngInject
@@ -2678,7 +2686,6 @@ function MdGesture($$MdGestureHandler, $$rAF, $timeout) {
};
if (self.isHijackingClicks) {
var maxClickDistance = 6;
self.handler('click', {
options: {
maxDistance: maxClickDistance
@@ -10023,8 +10030,6 @@ function MdDialogDirective($$rAF, $mdTheming, $mdDialog) {
* `three` into the controller, with the value 3. If `bindToController` is true, they will be
* copied to the controller instead.
* - `bindToController` - `bool`: bind the locals to the controller, instead of passing them in.
* - `resolve` - `{object=}`: Similar to locals, except it takes promises as values, and the
* dialog will not open until all of the promises resolve.
* - `controllerAs` - `{string=}`: An alias to assign the controller to on the scope.
* - `parent` - `{element=}`: The element to append the dialog to. Defaults to appending
* to the root element of the application.
@@ -10090,7 +10095,7 @@ function MdDialogProvider($$interimElementProvider) {
})
.addPreset('prompt', {
methods: ['title', 'htmlContent', 'textContent', 'initialValue', 'content', 'placeholder', 'ariaLabel',
'ok', 'cancel', 'theme', 'css'],
'ok', 'cancel', 'theme', 'css', 'required'],
options: advancedDialogOptions
});
@@ -10108,7 +10113,7 @@ function MdDialogProvider($$interimElementProvider) {
' </div>',
' <md-input-container md-no-float ng-if="::dialog.$type == \'prompt\'" class="md-prompt-input-container">',
' <input ng-keypress="dialog.keypress($event)" md-autofocus ng-model="dialog.result" ' +
' placeholder="{{::dialog.placeholder}}">',
' placeholder="{{::dialog.placeholder}}" ng-required="dialog.required">',
' </md-input-container>',
' </md-dialog-content>',
' <md-dialog-actions>',
@@ -10116,7 +10121,8 @@ function MdDialogProvider($$interimElementProvider) {
' ng-click="dialog.abort()" class="md-primary md-cancel-button">',
' {{ dialog.cancel }}',
' </md-button>',
' <md-button ng-click="dialog.hide()" class="md-primary md-confirm-button" md-autofocus="dialog.$type===\'alert\'">',
' <md-button ng-click="dialog.hide()" class="md-primary md-confirm-button" md-autofocus="dialog.$type===\'alert\'"' +
' ng-disabled="dialog.required && !dialog.result">',
' {{ dialog.ok }}',
' </md-button>',
' </md-dialog-actions>',
@@ -13933,7 +13939,7 @@ function mdListItemDirective($mdAria, $mdConstant, $mdUtil, $timeout) {
function copyAttributes(source, destination, extraAttrs) {
var copiedAttrs = $mdUtil.prefixer([
'ng-if', 'ng-click', 'ng-dblclick', 'aria-label', 'ng-disabled', 'ui-sref',
'href', 'ng-href', 'target', 'ng-attr-ui-sref', 'ui-sref-opts'
'href', 'ng-href', 'rel', 'target', 'ng-attr-ui-sref', 'ui-sref-opts'
]);
if (extraAttrs) {
@@ -14843,6 +14849,7 @@ angular
* }
*
* function PanelMenuCtrl(mdPanelRef) {
* // The controller is provided with an import named 'mdPanelRef'
* this.closeMenu = function() {
* mdPanelRef && mdPanelRef.close();
* };
@@ -14915,7 +14922,7 @@ angular
* clickOutsideToClose: true,
* escapeToClose: true,
* focusOnOpen: true
* }
* };
*
* $mdPanel.open(config)
* .then(function(result) {
@@ -14967,7 +14974,8 @@ angular
* - `locals` - `{Object=}`: An object containing key/value pairs. The keys
* will be used as names of values to inject into the controller. For
* example, `locals: {three: 3}` would inject `three` into the controller,
* with the value 3.
* with the value 3. 'mdPanelRef' is a reserved key, and will always
* be set to the created MdPanelRef instance.
* - `resolve` - `{Object=}`: Similar to locals, except it takes promises as
* values. The panel will not open until all of the promises resolve.
* - `attachTo` - `{(string|!angular.JQLite|!Element)=}`: The element to
@@ -16613,6 +16621,7 @@ MdPanelRef.prototype._createPanel = function() {
// Handle click and touch events for the panel container.
if (self.config['propagateContainerEvents']) {
self.panelContainer.css('pointer-events', 'none');
self.panelEl.css('pointer-events', 'all');
}
// Panel may be outside the $rootElement, tell ngAnimate to animate
@@ -19968,6 +19977,14 @@ function SelectProvider($$interimElementProvider) {
* Interim-element onRemove logic....
*/
function onRemove(scope, element, opts) {
var animationRunner = null;
var destroyListener = scope.$on('$destroy', function() {
// Listen for the case where the element was destroyed while there was an
// ongoing close animation. If this happens, we need to end the animation
// manually.
animationRunner.end();
});
opts = opts || { };
opts.cleanupInteraction();
opts.cleanupResizing();
@@ -19975,8 +19992,7 @@ function SelectProvider($$interimElementProvider) {
// For navigation $destroy events, do a quick, non-animated removal,
// but for normal closes (from clicks, etc) animate the removal
return (opts.$destroy === true) ? cleanElement() : animateRemoval().then( cleanElement );
return (opts.$destroy === true) ? cleanElement() : animateRemoval().then(cleanElement);
/**
* For normal closes (eg clicks), animate the removal.
@@ -19984,17 +20000,20 @@ function SelectProvider($$interimElementProvider) {
* skip the animations
*/
function animateRemoval() {
return $animateCss(element, {addClass: 'md-leave'}).start();
animationRunner = $animateCss(element, {addClass: 'md-leave'});
return animationRunner.start();
}
/**
* Restore the element to a closed state
*/
function cleanElement() {
destroyListener();
element.removeClass('md-active');
element.attr('aria-hidden', 'true');
element[0].style.display = 'none';
element
.removeClass('md-active')
.attr('aria-hidden', 'true')
.css('display', 'none');
announceClosed(opts);
@@ -22558,6 +22577,123 @@ angular.module('material.components.tabs', [
(function(){
"use strict";
angular
.module('material.components.tabs')
.service('MdTabsPaginationService', MdTabsPaginationService);
/**
* @private
* @module material.components.tabs
* @name MdTabsPaginationService
* @description Provides many standalone functions to ease in pagination calculations.
*
* Most functions accept the elements and the current offset.
*
* The `elements` parameter is typically the value returned from the `getElements()` function of the
* tabsController.
*
* The `offset` parameter is always positive regardless of LTR or RTL (we simply make the LTR one
* negative when we apply our transform). This is typically the `ctrl.leftOffset` variable in the
* tabsController.
*
* @returns MdTabsPaginationService
* @constructor
*/
function MdTabsPaginationService() {
return {
decreasePageOffset: decreasePageOffset,
increasePageOffset: increasePageOffset,
getTabOffsets: getTabOffsets,
getTotalTabsWidth: getTotalTabsWidth
};
/**
* Returns the offset for the next decreasing page.
*
* @param elements
* @param currentOffset
* @returns {number}
*/
function decreasePageOffset(elements, currentOffset) {
var canvas = elements.canvas,
tabOffsets = getTabOffsets(elements),
i, firstVisibleTabOffset;
// Find the first fully visible tab in offset range
for (i = 0; i < tabOffsets.length; i++) {
if (tabOffsets[i] >= currentOffset) {
firstVisibleTabOffset = tabOffsets[i];
break;
}
}
// Return (the first visible tab offset - the tabs container width) without going negative
return Math.max(0, firstVisibleTabOffset - canvas.clientWidth);
}
/**
* Returns the offset for the next increasing page.
*
* @param elements
* @param currentOffset
* @returns {number}
*/
function increasePageOffset(elements, currentOffset) {
var canvas = elements.canvas,
maxOffset = getTotalTabsWidth(elements) - canvas.clientWidth,
tabOffsets = getTabOffsets(elements),
i, firstHiddenTabOffset;
// Find the first partially (or fully) invisible tab
for (i = 0; i < tabOffsets.length, tabOffsets[i] <= currentOffset + canvas.clientWidth; i++) {
firstHiddenTabOffset = tabOffsets[i];
}
// Return the offset of the first hidden tab, or the maximum offset (whichever is smaller)
return Math.min(maxOffset, firstHiddenTabOffset);
}
/**
* Returns the offsets of all of the tabs based on their widths.
*
* @param elements
* @returns {number[]}
*/
function getTabOffsets(elements) {
var i, tab, currentOffset = 0, offsets = [];
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[i];
offsets.push(currentOffset);
currentOffset += tab.offsetWidth;
}
return offsets;
}
/**
* Sum the width of all tabs.
*
* @param elements
* @returns {number}
*/
function getTotalTabsWidth(elements) {
var sum = 0, i, tab;
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[i];
sum += tab.offsetWidth;
}
return sum;
}
}
})();
(function(){
"use strict";
/**
* @ngdoc module
* @name material.components.toast
@@ -26413,7 +26549,7 @@ function MdAutocomplete ($$mdSvgRegistry) {
'type="button" ' +
'aria-label="Clear Input" ' +
'tabindex="-1" ' +
'ng-if="clearButton && $mdAutocompleteCtrl.scope.searchText && !$mdAutocompleteCtrl.isDisabled" ' +
'ng-if="clearButton && $mdAutocompleteCtrl.scope.searchText" ' +
'ng-click="$mdAutocompleteCtrl.clear($event)">' +
'<md-icon md-svg-src="' + $$mdSvgRegistry.mdClose + '"></md-icon>' +
'</button>';
@@ -27902,7 +28038,7 @@ MdChipsCtrl.prototype.contentIdFor = function(index) {
*
* <ul>Validation
* <li>allow a validation callback</li>
* <li>hilighting style for invalid chips</li>
* <li>highlighting style for invalid chips</li>
* </ul>
*
* <ul>Item mutation
@@ -34823,7 +34959,7 @@ function MdTabScroll ($parse) {
"use strict";
MdTabsController.$inject = ["$scope", "$element", "$window", "$mdConstant", "$mdTabInkRipple", "$mdUtil", "$animateCss", "$attrs", "$compile", "$mdTheming", "$mdInteraction"];angular
MdTabsController.$inject = ["$scope", "$element", "$window", "$mdConstant", "$mdTabInkRipple", "$mdUtil", "$animateCss", "$attrs", "$compile", "$mdTheming", "$mdInteraction", "MdTabsPaginationService"];angular
.module('material.components.tabs')
.controller('MdTabsController', MdTabsController);
@@ -34831,7 +34967,8 @@ MdTabsController.$inject = ["$scope", "$element", "$window", "$mdConstant", "$md
* @ngInject
*/
function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipple, $mdUtil,
$animateCss, $attrs, $compile, $mdTheming, $mdInteraction) {
$animateCss, $attrs, $compile, $mdTheming, $mdInteraction,
MdTabsPaginationService) {
// define private properties
var ctrl = this,
locked = false,
@@ -35014,9 +35151,16 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
if (newWidth !== oldWidth) {
var elements = getElements();
// Set the max width for the real tabs
angular.forEach(elements.tabs, function(tab) {
tab.style.maxWidth = newWidth + 'px';
});
// Set the max width for the dummy tabs too
angular.forEach(elements.dummies, function(tab) {
tab.style.maxWidth = newWidth + 'px';
});
$mdUtil.nextTick(ctrl.updateInkBarStyles);
}
}
@@ -35046,7 +35190,10 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
*/
function handleOffsetChange (left) {
var elements = getElements();
var newValue = ctrl.shouldCenterTabs ? '' : '-' + left + 'px';
var newValue = ((ctrl.shouldCenterTabs || isRtl() ? '' : '-') + left + 'px');
// Fix double-negative which can happen with RTL support
newValue = newValue.replace('--', '');
angular.element(elements.paging).css($mdConstant.CSS.TRANSFORM, 'translate3d(' + newValue + ', 0, 0)');
$scope.$broadcast('$mdTabsPaginationChanged');
@@ -35132,6 +35279,13 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
event.preventDefault();
if (!locked) select(ctrl.focusIndex);
break;
case $mdConstant.KEY_CODE.TAB:
// On tabbing out of the tablist, reset hasFocus to reset ng-focused and
// its md-focused class if the focused tab is not the active tab.
if (ctrl.focusIndex !== ctrl.selectedIndex) {
ctrl.focusIndex = ctrl.selectedIndex;
}
break;
}
}
@@ -35165,48 +35319,23 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
* Slides the tabs over approximately one page forward.
*/
function nextPage () {
var elements = getElements();
var viewportWidth = elements.canvas.clientWidth,
totalWidth = viewportWidth + ctrl.offsetLeft,
i, tab;
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[ i ];
if (tab.offsetLeft + tab.offsetWidth > totalWidth) break;
}
if (!ctrl.canPageForward()) { return }
if (viewportWidth > tab.offsetWidth) {
//Canvas width *greater* than tab width: usual positioning
ctrl.offsetLeft = fixOffset(tab.offsetLeft);
} else {
/**
* Canvas width *smaller* than tab width: positioning at the *end* of current tab to let
* pagination "for loop" to proceed correctly on next tab when nextPage() is called again
*/
ctrl.offsetLeft = fixOffset(tab.offsetLeft + (tab.offsetWidth - viewportWidth + 1));
}
var newOffset = MdTabsPaginationService.increasePageOffset(getElements(), ctrl.offsetLeft);
ctrl.offsetLeft = fixOffset(newOffset);
}
/**
* Slides the tabs over approximately one page backward.
*/
function previousPage () {
var i, tab, elements = getElements();
if (!ctrl.canPageBack()) { return }
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[ i ];
if (tab.offsetLeft + tab.offsetWidth >= ctrl.offsetLeft) break;
}
var newOffset = MdTabsPaginationService.decreasePageOffset(getElements(), ctrl.offsetLeft);
if (elements.canvas.clientWidth > tab.offsetWidth) {
//Canvas width *greater* than tab width: usual positioning
ctrl.offsetLeft = fixOffset(tab.offsetLeft + tab.offsetWidth - elements.canvas.clientWidth);
} else {
/**
* Canvas width *smaller* than tab width: positioning at the *beginning* of current tab to let
* pagination "for loop" to break correctly on previous tab when previousPage() is called again
*/
ctrl.offsetLeft = fixOffset(tab.offsetLeft);
}
// Set the new offset
ctrl.offsetLeft = fixOffset(newOffset);
}
/**
@@ -35215,6 +35344,7 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
function handleWindowResize () {
ctrl.lastSelectedIndex = ctrl.selectedIndex;
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft);
$mdUtil.nextTick(function () {
ctrl.updateInkBarStyles();
updatePagination();
@@ -35311,6 +35441,8 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
elements.canvas = elements.wrapper.querySelector('md-tabs-canvas');
elements.paging = elements.canvas.querySelector('md-pagination-wrapper');
elements.inkBar = elements.paging.querySelector('md-ink-bar');
elements.nextButton = node.querySelector('md-next-button');
elements.prevButton = node.querySelector('md-prev-button');
elements.contents = node.querySelectorAll('md-tabs-content-wrapper > md-tab-content');
elements.tabs = elements.paging.querySelectorAll('md-tab-item');
@@ -35324,6 +35456,7 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
* @returns {boolean}
*/
function canPageBack () {
// This works for both LTR and RTL
return ctrl.offsetLeft > 0;
}
@@ -35334,6 +35467,11 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
function canPageForward () {
var elements = getElements();
var lastTab = elements.tabs[ elements.tabs.length - 1 ];
if (isRtl()) {
return ctrl.offsetLeft < elements.paging.offsetWidth - elements.canvas.offsetWidth;
}
return lastTab && lastTab.offsetLeft + lastTab.offsetWidth > elements.canvas.clientWidth +
ctrl.offsetLeft;
}
@@ -35381,7 +35519,7 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
if (ctrl.noPagination || !loaded) return false;
var canvasWidth = $element.prop('clientWidth');
angular.forEach(getElements().dummies, function (tab) {
angular.forEach(getElements().tabs, function (tab) {
canvasWidth -= tab.offsetWidth;
});
@@ -35440,7 +35578,7 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
* @returns {number}
*/
function calcPagingWidth () {
return calcTabsWidth(getElements().dummies);
return calcTabsWidth(getElements().tabs);
}
function calcTabsWidth(tabs) {
@@ -35458,7 +35596,28 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
}
function getMaxTabWidth () {
return $element.prop('clientWidth');
var elements = getElements(),
containerWidth = elements.canvas.clientWidth,
// See https://material.google.com/components/tabs.html#tabs-specs
specMax = 264;
// Do the spec maximum, or the canvas width; whichever is *smaller* (tabs larger than the canvas
// width can break the pagination) but not less than 0
return Math.max(0, Math.min(containerWidth - 1, specMax));
}
function getMinTabWidth() {
var elements = getElements(),
containerWidth = elements.canvas.clientWidth,
xsBreakpoint = 600,
// See https://material.google.com/components/tabs.html#tabs-specs
specMin = containerWidth > xsBreakpoint ? 160 : 72;
// Do the spec minimum, or the canvas width; whichever is *smaller* (tabs larger than the canvas
// width can break the pagination) but not less than 0
return Math.max(0, Math.min(containerWidth - 1, specMin));
}
/**
@@ -35492,12 +35651,12 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
}
/**
* This is used to forward focus to dummy elements. This method is necessary to avoid animation
* issues when attempting to focus an item that is out of view.
* This is used to forward focus to tab container elements. This method is necessary to avoid
* animation issues when attempting to focus an item that is out of view.
*/
function redirectFocus () {
ctrl.styleTabItemFocus = ($mdInteraction.getLastInteractionType() === 'keyboard');
getElements().dummies[ ctrl.focusIndex ].focus();
getElements().tabs[ ctrl.focusIndex ].focus();
}
/**
@@ -35511,9 +35670,25 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
if (ctrl.shouldCenterTabs) return;
var tab = elements.tabs[ index ],
left = tab.offsetLeft,
right = tab.offsetWidth + left;
ctrl.offsetLeft = Math.max(ctrl.offsetLeft, fixOffset(right - elements.canvas.clientWidth + 32 * 2));
ctrl.offsetLeft = Math.min(ctrl.offsetLeft, fixOffset(left));
right = tab.offsetWidth + left,
extraOffset = 32;
// If we are selecting the first tab (in LTR and RTL), always set the offset to 0
if (index == 0) {
ctrl.offsetLeft = 0;
return;
}
if (isRtl()) {
var tabWidthsBefore = calcTabsWidth(Array.prototype.slice.call(elements.tabs, 0, index));
var tabWidthsIncluding = calcTabsWidth(Array.prototype.slice.call(elements.tabs, 0, index + 1));
ctrl.offsetLeft = Math.min(ctrl.offsetLeft, fixOffset(tabWidthsBefore));
ctrl.offsetLeft = Math.max(ctrl.offsetLeft, fixOffset(tabWidthsIncluding - elements.canvas.clientWidth));
} else {
ctrl.offsetLeft = Math.max(ctrl.offsetLeft, fixOffset(right - elements.canvas.clientWidth + extraOffset));
ctrl.offsetLeft = Math.min(ctrl.offsetLeft, fixOffset(left));
}
}
/**
@@ -35670,10 +35845,18 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
var elements = getElements();
if (!elements.tabs.length || !ctrl.shouldPaginate) return 0;
var lastTab = elements.tabs[ elements.tabs.length - 1 ],
totalWidth = lastTab.offsetLeft + lastTab.offsetWidth;
value = Math.max(0, value);
value = Math.min(totalWidth - elements.canvas.clientWidth, value);
if (isRtl()) {
value = Math.min(elements.paging.offsetWidth - elements.canvas.clientWidth, value);
value = Math.max(0, value);
} else {
value = Math.max(0, value);
value = Math.min(totalWidth - elements.canvas.clientWidth, value);
}
return value;
}
@@ -35699,6 +35882,10 @@ function MdTabsController ($scope, $element, $window, $mdConstant, $mdTabInkRipp
angular.element(nodes).attr('aria-controls', ctrl.tabContentPrefix + tab.id);
}
}
function isRtl() {
return ($mdUtil.bidi() == 'rtl');
}
}
})();
@@ -35839,27 +36026,28 @@ function MdTabs ($$mdSvgRegistry) {
'<md-icon md-svg-src="'+ $$mdSvgRegistry.mdTabsArrow +'"></md-icon> ' +
'</md-next-button> ' +
'<md-tabs-canvas ' +
'tabindex="{{ $mdTabsCtrl.hasFocus ? -1 : 0 }}" ' +
'aria-activedescendant="{{$mdTabsCtrl.getFocusedTabId()}}" ' +
'ng-focus="$mdTabsCtrl.redirectFocus()" ' +
'ng-class="{ ' +
'\'md-paginated\': $mdTabsCtrl.shouldPaginate, ' +
'\'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs ' +
'}" ' +
'ng-keydown="$mdTabsCtrl.keydown($event)" ' +
'role="tablist"> ' +
'ng-keydown="$mdTabsCtrl.keydown($event)"> ' +
'<md-pagination-wrapper ' +
'ng-class="{ \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs }" ' +
'md-tab-scroll="$mdTabsCtrl.scroll($event)"> ' +
'md-tab-scroll="$mdTabsCtrl.scroll($event)" ' +
'role="tablist"> ' +
'<md-tab-item ' +
'tabindex="-1" ' +
'tabindex="{{ tab.isActive() ? 0 : -1 }}" ' +
'class="md-tab" ' +
'ng-repeat="tab in $mdTabsCtrl.tabs" ' +
'role="tab" ' +
'id="tab-item-{{::tab.id}}" ' +
'md-tab-id="{{::tab.id}}"' +
'aria-selected="{{tab.isActive()}}" ' +
'aria-disabled="{{tab.scope.disabled || \'false\'}}" ' +
'ng-click="$mdTabsCtrl.select(tab.getIndex())" ' +
'ng-focus="$mdTabsCtrl.hasFocus = true" ' +
'ng-blur="$mdTabsCtrl.hasFocus = false" ' +
'ng-class="{ ' +
'\'md-active\': tab.isActive(), ' +
'\'md-focused\': tab.hasFocus(), ' +
@@ -35872,16 +36060,10 @@ function MdTabs ($$mdSvgRegistry) {
'md-scope="::tab.parent"></md-tab-item> ' +
'<md-ink-bar></md-ink-bar> ' +
'</md-pagination-wrapper> ' +
'<md-tabs-dummy-wrapper class="md-visually-hidden md-dummy-wrapper"> ' +
'<md-tabs-dummy-wrapper aria-hidden="true" class="md-visually-hidden md-dummy-wrapper"> ' +
'<md-dummy-tab ' +
'class="md-tab" ' +
'tabindex="-1" ' +
'id="tab-item-{{::tab.id}}" ' +
'md-tab-id="{{::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-tabs-template="::tab.label" ' +
'md-scope="::tab.parent"></md-dummy-tab> ' +
@@ -36032,4 +36214,4 @@ angular.module("material.core").constant("$MD_THEME_CSS", "md-autocomplete.md-TH
})();
})(window, window.angular);;window.ngMaterial={version:{full: "1.1.4-master-e1345ae"}};
})(window, window.angular);;window.ngMaterial={version:{full: "1.1.4-master-75237c6"}};