rails-angular-material 0.9.0.pre.rc2 → 0.9.0.pre.rc3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,15 +2,9 @@
2
2
  * Angular Material Design
3
3
  * https://github.com/angular/material
4
4
  * @license MIT
5
- * v0.9.0-rc2
6
- */
7
- angular.module('ngMaterial', ["ng","ngAnimate","ngAria","material.core","material.core.gestures","material.core.theming.palette","material.core.theming","material.components.autocomplete","material.components.backdrop","material.components.bottomSheet","material.components.button","material.components.checkbox","material.components.chips","material.components.content","material.components.dialog","material.components.card","material.components.divider","material.components.gridList","material.components.icon","material.components.list","material.components.input","material.components.progressCircular","material.components.progressLinear","material.components.radioButton","material.components.select","material.components.sidenav","material.components.slider","material.components.sticky","material.components.subheader","material.components.swipe","material.components.switch","material.components.tabs","material.components.toast","material.components.toolbar","material.components.tooltip","material.components.whiteframe"]);
8
- /*!
9
- * Angular Material Design
10
- * https://github.com/angular/material
11
- * @license MIT
12
- * v0.9.0-rc2
5
+ * v0.9.0-rc3
13
6
  */
7
+ angular.module('ngMaterial', ["ng","ngAnimate","ngAria","material.core","material.core.gestures","material.core.theming.palette","material.core.theming","material.components.autocomplete","material.components.backdrop","material.components.bottomSheet","material.components.button","material.components.card","material.components.checkbox","material.components.chips","material.components.content","material.components.dialog","material.components.divider","material.components.gridList","material.components.icon","material.components.input","material.components.list","material.components.progressCircular","material.components.progressLinear","material.components.radioButton","material.components.select","material.components.sidenav","material.components.slider","material.components.sticky","material.components.subheader","material.components.swipe","material.components.switch","material.components.tabs","material.components.toast","material.components.toolbar","material.components.tooltip","material.components.whiteframe"]);
14
8
  (function() {
15
9
  'use strict';
16
10
 
@@ -68,12 +62,6 @@ function rAFDecorator( $delegate ) {
68
62
 
69
63
  })();
70
64
 
71
- /*!
72
- * Angular Material Design
73
- * https://github.com/angular/material
74
- * @license MIT
75
- * v0.9.0-rc2
76
- */
77
65
  (function() {
78
66
  'use strict';
79
67
 
@@ -137,12 +125,6 @@ MdConstantFactory.$inject = ["$$rAF", "$sniffer"];
137
125
 
138
126
  })();
139
127
 
140
- /*!
141
- * Angular Material Design
142
- * https://github.com/angular/material
143
- * @license MIT
144
- * v0.9.0-rc2
145
- */
146
128
  (function(){
147
129
 
148
130
  angular
@@ -374,12 +356,6 @@ MdConstantFactory.$inject = ["$$rAF", "$sniffer"];
374
356
 
375
357
  })();
376
358
 
377
- /*!
378
- * Angular Material Design
379
- * https://github.com/angular/material
380
- * @license MIT
381
- * v0.9.0-rc2
382
- */
383
359
  (function(){
384
360
 
385
361
  angular.module('material.core')
@@ -513,12 +489,6 @@ mdMediaFactory.$inject = ["$mdConstant", "$rootScope", "$window"];
513
489
 
514
490
  })();
515
491
 
516
- /*!
517
- * Angular Material Design
518
- * https://github.com/angular/material
519
- * @license MIT
520
- * v0.9.0-rc2
521
- */
522
492
  (function() {
523
493
  'use strict';
524
494
 
@@ -564,14 +534,24 @@ angular.module('material.core')
564
534
  return Util.clientRect(element, offsetParent, true);
565
535
  },
566
536
  disableScrollAround: function(element) {
567
- var parentContent = element[0] || element;
537
+ var parentContent = element instanceof angular.element ? element[0] : element;
538
+ var lastParent;
568
539
  var disableTarget, scrollEl, useDocElement;
569
- while (parentContent = this.getClosest(parentContent.parentNode, 'MD-CONTENT', true)) {
540
+ while (parentContent = this.getClosest(parentContent, 'MD-CONTENT', true)) {
570
541
  if (isScrolling(parentContent)) {
571
542
  disableTarget = angular.element(parentContent);
543
+ } else {
544
+ lastParent = parentContent;
545
+ }
546
+ }
547
+ if (!disableTarget) {
548
+ if (!lastParent ||
549
+ $document[0].body.scrollTop || $document[0].documentElement.scrollTop ) {
550
+ disableTarget = angular.element($document[0].body);
551
+ } else {
552
+ disableTarget = angular.element(lastParent);
572
553
  }
573
554
  }
574
- if (!disableTarget) disableTarget = angular.element($document[0].body);
575
555
 
576
556
  if (disableTarget[0].nodeName == 'BODY' && $document[0].documentElement.scrollTop) {
577
557
  scrollEl = $document[0].documentElement;
@@ -587,7 +567,7 @@ angular.module('material.core')
587
567
  var disableStyle = $window.getComputedStyle(disableTarget[0]);
588
568
  var wrapperEl = angular.element('<div class="md-virtual-scroll-container"><div class="md-virtual-scroller"></div></div>');
589
569
  var virtualScroller = wrapperEl.children().eq(0);
590
- virtualScroller.append(disableTarget.children());
570
+ virtualScroller.append(disableTarget[0].childNodes);
591
571
  disableTarget.append(wrapperEl);
592
572
  var originalScrollBarShow = originalWidth < scrollEl.clientWidth;
593
573
 
@@ -609,6 +589,9 @@ angular.module('material.core')
609
589
  '-ms-flex': disableStyle.msFlex,
610
590
  flex: disableStyle.flex
611
591
  });
592
+ if (/flex$/.test(disableStyle.display)) {
593
+ virtualScroller.css('height', '100%');
594
+ }
612
595
 
613
596
  computeSize();
614
597
 
@@ -667,7 +650,7 @@ angular.module('material.core')
667
650
  }
668
651
 
669
652
  return function restoreScroll() {
670
- disableTarget.append(virtualScroller.children());
653
+ disableTarget.append(virtualScroller[0].childNodes);
671
654
  wrapperEl.remove();
672
655
  angular.element($window).off('resize', computeSize);
673
656
  disableTarget.attr('style', restoreStyle || false);
@@ -867,12 +850,13 @@ angular.module('material.core')
867
850
  parent.$$childHead = parent.$$childTail = child;
868
851
  }
869
852
  },
870
- /*
871
- * getClosest replicates jQuery.closest() to walk up the DOM tree until it finds a matching nodeName
872
- *
873
- * @param el Element to start walking the DOM from
874
- * @param tagName Tag name to find closest to el, such as 'form'
875
- */
853
+
854
+ /*
855
+ * getClosest replicates jQuery.closest() to walk up the DOM tree until it finds a matching nodeName
856
+ *
857
+ * @param el Element to start walking the DOM from
858
+ * @param tagName Tag name to find closest to el, such as 'form'
859
+ */
876
860
  getClosest: function getClosest(el, tagName, onlyParent) {
877
861
  if (el instanceof angular.element) el = el[0];
878
862
  tagName = tagName.toUpperCase();
@@ -897,6 +881,20 @@ angular.module('material.core')
897
881
  }
898
882
  }
899
883
  return element;
884
+ },
885
+
886
+ /**
887
+ * Give optional properties with no value a boolean true by default
888
+ */
889
+ initOptionalProperties : function (scope, attr, defaults ) {
890
+ defaults = defaults || { };
891
+ angular.forEach(scope.$$isolateBindings, function (binding, key) {
892
+ if (binding.optional && angular.isUndefined(scope[key])) {
893
+ var hasKey = attr.hasOwnProperty(attr.$normalize(binding.attrName));
894
+
895
+ scope[key] = angular.isDefined(defaults[key]) ? defaults[key] : hasKey;
896
+ }
897
+ });
900
898
  }
901
899
 
902
900
  };
@@ -926,18 +924,15 @@ angular.element.prototype.blur = angular.element.prototype.blur || function() {
926
924
 
927
925
  })();
928
926
 
929
- /*!
930
- * Angular Material Design
931
- * https://github.com/angular/material
932
- * @license MIT
933
- * v0.9.0-rc2
934
- */
935
927
  (function() {
936
928
  'use strict';
937
929
 
938
930
  angular.module('material.core')
939
931
  .service('$mdAria', AriaService);
940
932
 
933
+ /*
934
+ * @ngInject
935
+ */
941
936
  function AriaService($$rAF, $log, $window) {
942
937
 
943
938
  return {
@@ -1016,12 +1011,6 @@ function AriaService($$rAF, $log, $window) {
1016
1011
  AriaService.$inject = ["$$rAF", "$log", "$window"];
1017
1012
  })();
1018
1013
 
1019
- /*!
1020
- * Angular Material Design
1021
- * https://github.com/angular/material
1022
- * @license MIT
1023
- * v0.9.0-rc2
1024
- */
1025
1014
  (function() {
1026
1015
  'use strict';
1027
1016
 
@@ -1161,12 +1150,6 @@ function mdCompilerService($q, $http, $injector, $compile, $controller, $templat
1161
1150
  mdCompilerService.$inject = ["$q", "$http", "$injector", "$compile", "$controller", "$templateCache"];
1162
1151
  })();
1163
1152
 
1164
- /*!
1165
- * Angular Material Design
1166
- * https://github.com/angular/material
1167
- * @license MIT
1168
- * v0.9.0-rc2
1169
- */
1170
1153
  (function (jQuery) {
1171
1154
  'use strict';
1172
1155
 
@@ -1773,12 +1756,6 @@ mdCompilerService.$inject = ["$q", "$http", "$injector", "$compile", "$controlle
1773
1756
 
1774
1757
  })(window.jQuery);
1775
1758
 
1776
- /*!
1777
- * Angular Material Design
1778
- * https://github.com/angular/material
1779
- * @license MIT
1780
- * v0.9.0-rc2
1781
- */
1782
1759
  (function() {
1783
1760
  'use strict';
1784
1761
 
@@ -2150,11 +2127,15 @@ function InterimElementProvider() {
2150
2127
  // If parent querySelector/getter function fails, or it's just null,
2151
2128
  // find a default.
2152
2129
  if (!(options.parent || {}).length) {
2153
- options.parent = $rootElement.find('body');
2154
- if (!options.parent.length) options.parent = $rootElement;
2155
- if (options.parent[0].nodeName == '#comment') {
2156
- options.parent = $document.find('body');
2130
+ var el;
2131
+ if ($rootElement[0] && $rootElement[0].querySelector) {
2132
+ el = $rootElement[0].querySelector(':not(svg) > body');
2133
+ }
2134
+ if (!el) el = $rootElement[0];
2135
+ if (el.nodeName == '#comment') {
2136
+ el = $document[0].body;
2157
2137
  }
2138
+ options.parent = angular.element(el);
2158
2139
  }
2159
2140
 
2160
2141
  if (options.themable) $mdTheming(element);
@@ -2211,12 +2192,6 @@ function InterimElementProvider() {
2211
2192
 
2212
2193
  })();
2213
2194
 
2214
- /*!
2215
- * Angular Material Design
2216
- * https://github.com/angular/material
2217
- * @license MIT
2218
- * v0.9.0-rc2
2219
- */
2220
2195
  (function() {
2221
2196
  'use strict';
2222
2197
 
@@ -2344,12 +2319,6 @@ function InterimElementProvider() {
2344
2319
 
2345
2320
  })();
2346
2321
 
2347
- /*!
2348
- * Angular Material Design
2349
- * https://github.com/angular/material
2350
- * @license MIT
2351
- * v0.9.0-rc2
2352
- */
2353
2322
  (function() {
2354
2323
  'use strict';
2355
2324
 
@@ -2778,12 +2747,6 @@ function attrNoDirective() {
2778
2747
  }
2779
2748
  })();
2780
2749
 
2781
- /*!
2782
- * Angular Material Design
2783
- * https://github.com/angular/material
2784
- * @license MIT
2785
- * v0.9.0-rc2
2786
- */
2787
2750
  (function() {
2788
2751
  'use strict';
2789
2752
 
@@ -3150,12 +3113,6 @@ angular.module('material.core.theming.palette', [])
3150
3113
  });
3151
3114
  })();
3152
3115
 
3153
- /*!
3154
- * Angular Material Design
3155
- * https://github.com/angular/material
3156
- * @license MIT
3157
- * v0.9.0-rc2
3158
- */
3159
3116
  (function() {
3160
3117
  'use strict';
3161
3118
 
@@ -3388,7 +3345,7 @@ function ThemingProvider($mdColorPalette) {
3388
3345
 
3389
3346
  self.foregroundPalette = self.isDark ? LIGHT_FOREGROUND : DARK_FOREGROUND;
3390
3347
  self.foregroundShadow = self.isDark ? DARK_SHADOW : LIGHT_SHADOW;
3391
-
3348
+
3392
3349
  // Light and dark themes have different default hues.
3393
3350
  // Go through each existing color type for this theme, and for every
3394
3351
  // hue value that is still the default hue value from the previous light/dark setting,
@@ -3605,7 +3562,9 @@ function generateThemes($injector) {
3605
3562
 
3606
3563
  // Insert our newly minted styles into the DOM
3607
3564
  var head = document.getElementsByTagName('head')[0];
3565
+ if (!head) return;
3608
3566
  var firstChild = head.firstElementChild;
3567
+ if (!firstChild) return;
3609
3568
  var themeCss = $injector.has('$MD_THEME_CSS') ? $injector.get('$MD_THEME_CSS') : '';
3610
3569
 
3611
3570
  // Expose contrast colors for palettes to ensure that text is always readable
@@ -3788,12 +3747,6 @@ function rgba(rgbArray, opacity) {
3788
3747
 
3789
3748
  })();
3790
3749
 
3791
- /*!
3792
- * Angular Material Design
3793
- * https://github.com/angular/material
3794
- * @license MIT
3795
- * v0.9.0-rc2
3796
- */
3797
3750
  /**
3798
3751
  * @ngdoc module
3799
3752
  * @name material.components.autocomplete
@@ -3806,12 +3759,6 @@ angular.module('material.components.autocomplete', [
3806
3759
  'material.components.icon'
3807
3760
  ]);
3808
3761
 
3809
- /*!
3810
- * Angular Material Design
3811
- * https://github.com/angular/material
3812
- * @license MIT
3813
- * v0.9.0-rc2
3814
- */
3815
3762
  /*
3816
3763
  * @ngdoc module
3817
3764
  * @name material.components.backdrop
@@ -3841,12 +3788,6 @@ function BackdropDirective($mdTheming) {
3841
3788
  }
3842
3789
  BackdropDirective.$inject = ["$mdTheming"];
3843
3790
 
3844
- /*!
3845
- * Angular Material Design
3846
- * https://github.com/angular/material
3847
- * @license MIT
3848
- * v0.9.0-rc2
3849
- */
3850
3791
  /**
3851
3792
  * @ngdoc module
3852
3793
  * @name material.components.bottomSheet
@@ -4104,12 +4045,6 @@ function MdBottomSheetProvider($$interimElementProvider) {
4104
4045
  }
4105
4046
  MdBottomSheetProvider.$inject = ["$$interimElementProvider"];
4106
4047
 
4107
- /*!
4108
- * Angular Material Design
4109
- * https://github.com/angular/material
4110
- * @license MIT
4111
- * v0.9.0-rc2
4112
- */
4113
4048
  /**
4114
4049
  * @ngdoc module
4115
4050
  * @name material.components.button
@@ -4207,6 +4142,14 @@ function MdButtonDirective($mdInkRipple, $mdTheming, $mdAria, $timeout) {
4207
4142
  });
4208
4143
  }
4209
4144
 
4145
+ // disabling click event when disabled is true
4146
+ element.on('click', function(e){
4147
+ if (attr.disabled === true) {
4148
+ e.preventDefault();
4149
+ e.stopImmediatePropagation();
4150
+ }
4151
+ });
4152
+
4210
4153
  // restrict focus styles to the keyboard
4211
4154
  scope.mouseActive = false;
4212
4155
  element.on('mousedown', function() {
@@ -4224,12 +4167,81 @@ function MdButtonDirective($mdInkRipple, $mdTheming, $mdAria, $timeout) {
4224
4167
  }
4225
4168
  MdButtonDirective.$inject = ["$mdInkRipple", "$mdTheming", "$mdAria", "$timeout"];
4226
4169
 
4227
- /*!
4228
- * Angular Material Design
4229
- * https://github.com/angular/material
4230
- * @license MIT
4231
- * v0.9.0-rc2
4170
+ /**
4171
+ * @ngdoc module
4172
+ * @name material.components.card
4173
+ *
4174
+ * @description
4175
+ * Card components.
4176
+ */
4177
+ angular.module('material.components.card', [
4178
+ 'material.core'
4179
+ ])
4180
+ .directive('mdCard', mdCardDirective);
4181
+
4182
+
4183
+
4184
+ /**
4185
+ * @ngdoc directive
4186
+ * @name mdCard
4187
+ * @module material.components.card
4188
+ *
4189
+ * @restrict E
4190
+ *
4191
+ * @description
4192
+ * The `<md-card>` directive is a container element used within `<md-content>` containers.
4193
+ *
4194
+ * An image included as a direct descendant will fill the card's width, while the `<md-card-content>`
4195
+ * container will wrap text content and provide padding. An `<md-card-footer>` element can be
4196
+ * optionally included to put content flush against the bottom edge of the card.
4197
+ *
4198
+ * Action buttons can be included in an element with the `.md-actions` class, also used in `md-dialog`.
4199
+ * You can then position buttons using layout attributes.
4200
+ *
4201
+ * Cards have constant width and variable heights; where the maximum height is limited to what can
4202
+ * fit within a single view on a platform, but it can temporarily expand as needed.
4203
+ *
4204
+ * @usage
4205
+ * ###Card with optional footer
4206
+ * <hljs lang="html">
4207
+ * <md-card>
4208
+ * <img src="card-image.png" class="md-card-image" alt="image caption">
4209
+ * <md-card-content>
4210
+ * <h2>Card headline</h2>
4211
+ * <p>Card content</p>
4212
+ * </md-card-content>
4213
+ * <md-card-footer>
4214
+ * Card footer
4215
+ * </md-card-footer>
4216
+ * </md-card>
4217
+ * </hljs>
4218
+ *
4219
+ * ###Card with actions
4220
+ * <hljs lang="html">
4221
+ * <md-card>
4222
+ * <img src="card-image.png" class="md-card-image" alt="image caption">
4223
+ * <md-card-content>
4224
+ * <h2>Card headline</h2>
4225
+ * <p>Card content</p>
4226
+ * </md-card-content>
4227
+ * <div class="md-actions" layout="row" layout-align="end center">
4228
+ * <md-button>Action 1</md-button>
4229
+ * <md-button>Action 2</md-button>
4230
+ * </div>
4231
+ * </md-card>
4232
+ * </hljs>
4233
+ *
4232
4234
  */
4235
+ function mdCardDirective($mdTheming) {
4236
+ return {
4237
+ restrict: 'E',
4238
+ link: function($scope, $element, $attr) {
4239
+ $mdTheming($element);
4240
+ }
4241
+ };
4242
+ }
4243
+ mdCardDirective.$inject = ["$mdTheming"];
4244
+
4233
4245
  /**
4234
4246
  * @ngdoc module
4235
4247
  * @name material.components.checkbox
@@ -4286,6 +4298,7 @@ function MdCheckboxDirective(inputDirective, $mdInkRipple, $mdAria, $mdConstant,
4286
4298
  restrict: 'E',
4287
4299
  transclude: true,
4288
4300
  require: '?ngModel',
4301
+ priority:210, // Run before ngAria
4289
4302
  template:
4290
4303
  '<div class="md-container" md-ink-ripple md-ink-ripple-checkbox>' +
4291
4304
  '<div class="md-icon"></div>' +
@@ -4386,12 +4399,6 @@ function MdCheckboxDirective(inputDirective, $mdInkRipple, $mdAria, $mdConstant,
4386
4399
  }
4387
4400
  MdCheckboxDirective.$inject = ["inputDirective", "$mdInkRipple", "$mdAria", "$mdConstant", "$mdTheming", "$mdUtil", "$timeout"];
4388
4401
 
4389
- /*!
4390
- * Angular Material Design
4391
- * https://github.com/angular/material
4392
- * @license MIT
4393
- * v0.9.0-rc2
4394
- */
4395
4402
  /**
4396
4403
  * @ngdoc module
4397
4404
  * @name material.components.chips
@@ -4404,12 +4411,6 @@ angular.module('material.components.chips', [
4404
4411
  'material.components.autocomplete'
4405
4412
  ]);
4406
4413
 
4407
- /*!
4408
- * Angular Material Design
4409
- * https://github.com/angular/material
4410
- * @license MIT
4411
- * v0.9.0-rc2
4412
- */
4413
4414
  /**
4414
4415
  * @ngdoc module
4415
4416
  * @name material.components.content
@@ -4485,12 +4486,6 @@ function iosScrollFix(node) {
4485
4486
  });
4486
4487
  }
4487
4488
 
4488
- /*!
4489
- * Angular Material Design
4490
- * https://github.com/angular/material
4491
- * @license MIT
4492
- * v0.9.0-rc2
4493
- */
4494
4489
  /**
4495
4490
  * @ngdoc module
4496
4491
  * @name material.components.dialog
@@ -4508,7 +4503,7 @@ function MdDialogDirective($$rAF, $mdTheming) {
4508
4503
  link: function(scope, element, attr) {
4509
4504
  $mdTheming(element);
4510
4505
  $$rAF(function() {
4511
- var content = element[0].querySelector('md-content');
4506
+ var content = element[0].querySelector('md-dialog-content');
4512
4507
  if (content && content.scrollHeight > content.clientHeight) {
4513
4508
  element.addClass('md-content-overflow');
4514
4509
  }
@@ -4532,7 +4527,7 @@ MdDialogDirective.$inject = ["$$rAF", "$mdTheming"];
4532
4527
  *
4533
4528
  * - The dialog is always given an isolate scope.
4534
4529
  * - The dialog's template must have an outer `<md-dialog>` element.
4535
- * Inside, use an `<md-content>` element for the dialog's content, and use
4530
+ * Inside, use an `<md-dialog-content>` element for the dialog's content, and use
4536
4531
  * an element with class `md-actions` for the dialog's actions.
4537
4532
  * - Dialogs must cover the entire application to keep interactions inside of them.
4538
4533
  * Use the `parent` option to change where dialogs are appended.
@@ -4544,18 +4539,26 @@ MdDialogDirective.$inject = ["$$rAF", "$mdTheming"];
4544
4539
  * @usage
4545
4540
  * <hljs lang="html">
4546
4541
  * <div ng-app="demoApp" ng-controller="EmployeeController">
4547
- * <md-button ng-click="showAlert()" class="md-raised md-warn">
4548
- * Employee Alert!
4549
- * </md-button>
4550
- * <md-button ng-click="showDialog($event)" class="md-raised">
4551
- * Custom Dialog
4552
- * </md-button>
4553
- * <md-button ng-click="closeAlert()" ng-disabled="!hasAlert()" class="md-raised">
4554
- * Close Alert
4555
- * </md-button>
4556
- * <md-button ng-click="showGreeting($event)" class="md-raised md-primary" >
4557
- * Greet Employee
4558
- * </md-button>
4542
+ * <div>
4543
+ * <md-button ng-click="showAlert()" class="md-raised md-warn">
4544
+ * Employee Alert!
4545
+ * </md-button>
4546
+ * </div>
4547
+ * <div>
4548
+ * <md-button ng-click="showDialog($event)" class="md-raised">
4549
+ * Custom Dialog
4550
+ * </md-button>
4551
+ * </div>
4552
+ * <div>
4553
+ * <md-button ng-click="closeAlert()" ng-disabled="!hasAlert()" class="md-raised">
4554
+ * Close Alert
4555
+ * </md-button>
4556
+ * </div>
4557
+ * <div>
4558
+ * <md-button ng-click="showGreeting($event)" class="md-raised md-primary" >
4559
+ * Greet Employee
4560
+ * </md-button>
4561
+ * </div>
4559
4562
  * </div>
4560
4563
  * </hljs>
4561
4564
  *
@@ -4596,15 +4599,15 @@ MdDialogDirective.$inject = ["$$rAF", "$mdTheming"];
4596
4599
  * targetEvent: $event,
4597
4600
  * template:
4598
4601
  * '<md-dialog aria-label="List dialog">' +
4599
- * ' <md-content>'+
4602
+ * ' <md-dialog-content>'+
4600
4603
  * ' <md-list>'+
4601
- * ' <md-item ng-repeat="item in items">'+
4604
+ * ' <md-list-item ng-repeat="item in items">'+
4602
4605
  * ' <p>Number {{item}}</p>' +
4603
4606
  * ' </md-item>'+
4604
4607
  * ' </md-list>'+
4605
- * ' </md-content>' +
4608
+ * ' </md-dialog-content>' +
4606
4609
  * ' <div class="md-actions">' +
4607
- * ' <md-button ng-click="closeDialog()">' +
4610
+ * ' <md-button ng-click="closeDialog()" class="md-primary">' +
4608
4611
  * ' Close Dialog' +
4609
4612
  * ' </md-button>' +
4610
4613
  * ' </div>' +
@@ -4680,12 +4683,11 @@ MdDialogDirective.$inject = ["$$rAF", "$mdTheming"];
4680
4683
  * template:
4681
4684
  * '<md-dialog>' +
4682
4685
  *
4683
- * ' <md-content>Hello {{ employee }}!</md-content>' +
4686
+ * ' <md-dialog-content>Hello {{ employee }}!</md-dialog-content>' +
4684
4687
  *
4685
4688
  * ' <div class="md-actions">' +
4686
- * ' <md-button ng-click="closeDialog()">' +
4689
+ * ' <md-button ng-click="closeDialog()" class="md-primary">' +
4687
4690
  * ' Close Greeting' +
4688
- *
4689
4691
  * ' </md-button>' +
4690
4692
  * ' </div>' +
4691
4693
  * '</md-dialog>',
@@ -4850,12 +4852,13 @@ function MdDialogProvider($$interimElementProvider) {
4850
4852
  return {
4851
4853
  template: [
4852
4854
  '<md-dialog md-theme="{{ dialog.theme }}" aria-label="{{ dialog.ariaLabel }}">',
4853
- '<md-content role="document" tabIndex="0">',
4855
+ '<md-dialog-content role="document" tabIndex="0">',
4854
4856
  '<h2 class="md-title">{{ dialog.title }}</h2>',
4855
4857
  '<p>{{ dialog.content }}</p>',
4856
- '</md-content>',
4858
+ '</md-dialog-content>',
4857
4859
  '<div class="md-actions">',
4858
- '<md-button ng-if="dialog.$type == \'confirm\'" ng-click="dialog.abort()">',
4860
+ '<md-button ng-if="dialog.$type == \'confirm\'"' +
4861
+ ' ng-click="dialog.abort()" class="md-primary">',
4859
4862
  '{{ dialog.cancel }}',
4860
4863
  '</md-button>',
4861
4864
  '<md-button ng-click="dialog.hide()" class="md-primary">',
@@ -4931,7 +4934,7 @@ function MdDialogProvider($$interimElementProvider) {
4931
4934
 
4932
4935
  if (options.$type === 'alert') {
4933
4936
  role = 'alertdialog';
4934
- elementToFocus = element.find('md-content');
4937
+ elementToFocus = element.find('md-dialog-content');
4935
4938
  }
4936
4939
 
4937
4940
  configureAria(element.find('md-dialog'), role, options);
@@ -5033,7 +5036,7 @@ function MdDialogProvider($$interimElementProvider) {
5033
5036
  'tabIndex': '-1'
5034
5037
  });
5035
5038
 
5036
- var dialogContent = element.find('md-content');
5039
+ var dialogContent = element.find('md-dialog-content');
5037
5040
  if (dialogContent.length === 0){
5038
5041
  dialogContent = element;
5039
5042
  }
@@ -5150,116 +5153,42 @@ function MdDialogProvider($$interimElementProvider) {
5150
5153
  }
5151
5154
  MdDialogProvider.$inject = ["$$interimElementProvider"];
5152
5155
 
5153
- /*!
5154
- * Angular Material Design
5155
- * https://github.com/angular/material
5156
- * @license MIT
5157
- * v0.9.0-rc2
5158
- */
5159
5156
  /**
5160
5157
  * @ngdoc module
5161
- * @name material.components.card
5162
- *
5163
- * @description
5164
- * Card components.
5158
+ * @name material.components.divider
5159
+ * @description Divider module!
5165
5160
  */
5166
- angular.module('material.components.card', [
5161
+ angular.module('material.components.divider', [
5167
5162
  'material.core'
5168
5163
  ])
5169
- .directive('mdCard', mdCardDirective);
5170
-
5171
-
5164
+ .directive('mdDivider', MdDividerDirective);
5172
5165
 
5173
5166
  /**
5174
5167
  * @ngdoc directive
5175
- * @name mdCard
5176
- * @module material.components.card
5177
- *
5168
+ * @name mdDivider
5169
+ * @module material.components.divider
5178
5170
  * @restrict E
5179
5171
  *
5180
5172
  * @description
5181
- * The `<md-card>` directive is a container element used within `<md-content>` containers.
5182
- *
5183
- * An image included as a direct descendant will fill the card's width, while the `<md-card-content>`
5184
- * container will wrap text content and provide padding. An `<md-card-footer>` element can be
5185
- * optionally included to put content flush against the bottom edge of the card.
5186
- *
5187
- * Cards have constant width and variable heights; where the maximum height is limited to what can
5188
- * fit within a single view on a platform, but it can temporarily expand as needed.
5173
+ * Dividers group and separate content within lists and page layouts using strong visual and spatial distinctions. This divider is a thin rule, lightweight enough to not distract the user from content.
5189
5174
  *
5175
+ * @param {boolean=} md-inset Add this attribute to activate the inset divider style.
5190
5176
  * @usage
5191
5177
  * <hljs lang="html">
5192
- * <md-card>
5193
- * <img src="card-image.png" class="md-card-image">
5194
- * <md-card-content>
5195
- * <h2>Card headline</h2>
5196
- * <p>Card content</p>
5197
- * </md-card-content>
5198
- * <md-card-footer>
5199
- * Card footer
5200
- * </md-card-footer>
5201
- * </md-card>
5178
+ * <md-divider></md-divider>
5179
+ *
5180
+ * <md-divider md-inset></md-divider>
5202
5181
  * </hljs>
5203
5182
  *
5204
5183
  */
5205
- function mdCardDirective($mdTheming) {
5184
+ function MdDividerDirective($mdTheming) {
5206
5185
  return {
5207
5186
  restrict: 'E',
5208
- link: function($scope, $element, $attr) {
5209
- $mdTheming($element);
5210
- }
5211
- };
5212
- }
5213
- mdCardDirective.$inject = ["$mdTheming"];
5214
-
5215
- /*!
5216
- * Angular Material Design
5217
- * https://github.com/angular/material
5218
- * @license MIT
5219
- * v0.9.0-rc2
5220
- */
5221
- /**
5222
- * @ngdoc module
5223
- * @name material.components.divider
5224
- * @description Divider module!
5225
- */
5226
- angular.module('material.components.divider', [
5227
- 'material.core'
5228
- ])
5229
- .directive('mdDivider', MdDividerDirective);
5230
-
5231
- /**
5232
- * @ngdoc directive
5233
- * @name mdDivider
5234
- * @module material.components.divider
5235
- * @restrict E
5236
- *
5237
- * @description
5238
- * Dividers group and separate content within lists and page layouts using strong visual and spatial distinctions. This divider is a thin rule, lightweight enough to not distract the user from content.
5239
- *
5240
- * @param {boolean=} md-inset Add this attribute to activate the inset divider style.
5241
- * @usage
5242
- * <hljs lang="html">
5243
- * <md-divider></md-divider>
5244
- *
5245
- * <md-divider md-inset></md-divider>
5246
- * </hljs>
5247
- *
5248
- */
5249
- function MdDividerDirective($mdTheming) {
5250
- return {
5251
- restrict: 'E',
5252
- link: $mdTheming
5187
+ link: $mdTheming
5253
5188
  };
5254
5189
  }
5255
5190
  MdDividerDirective.$inject = ["$mdTheming"];
5256
5191
 
5257
- /*!
5258
- * Angular Material Design
5259
- * https://github.com/angular/material
5260
- * @license MIT
5261
- * v0.9.0-rc2
5262
- */
5263
5192
  /**
5264
5193
  * @ngdoc module
5265
5194
  * @name material.components.gridList
@@ -5417,45 +5346,46 @@ function GridListDirective($interpolate, $mdConstant, $mdGridLayout, $mdMedia) {
5417
5346
  * Invokes the layout engine, and uses its results to lay out our
5418
5347
  * tile elements.
5419
5348
  *
5420
- * @param {boolean} tilesAdded Whether tiles have been added since the last
5421
- * layout. This is to avoid situations where tiles are replaced with
5422
- * properties identical to their removed counterparts.
5349
+ * @param {boolean} tilesInvalidated Whether tiles have been
5350
+ * added/removed/moved since the last layout. This is to avoid situations
5351
+ * where tiles are replaced with properties identical to their removed
5352
+ * counterparts.
5423
5353
  */
5424
- function layoutDelegate(tilesAdded) {
5354
+ function layoutDelegate(tilesInvalidated) {
5355
+ var tiles = getTileElements();
5425
5356
  var props = {
5426
- tileSpans: getTileSpans(),
5357
+ tileSpans: getTileSpans(tiles),
5427
5358
  colCount: getColumnCount(),
5428
5359
  rowMode: getRowMode(),
5429
5360
  rowHeight: getRowHeight(),
5430
5361
  gutter: getGutter()
5431
5362
  };
5432
5363
 
5433
- if (!tilesAdded && angular.equals(props, lastLayoutProps)) {
5364
+ if (!tilesInvalidated && angular.equals(props, lastLayoutProps)) {
5434
5365
  return;
5435
5366
  }
5436
5367
 
5437
- var tiles = getTileElements(),
5438
- performance =
5439
- $mdGridLayout(props.colCount, props.tileSpans, tiles)
5440
- .map(function(tilePositions, rowCount) {
5368
+ var performance =
5369
+ $mdGridLayout(props.colCount, props.tileSpans, tiles)
5370
+ .map(function(tilePositions, rowCount) {
5371
+ return {
5372
+ grid: {
5373
+ element: element,
5374
+ style: getGridStyle(props.colCount, rowCount,
5375
+ props.gutter, props.rowMode, props.rowHeight)
5376
+ },
5377
+ tiles: tilePositions.map(function(ps, i) {
5441
5378
  return {
5442
- grid: {
5443
- element: element,
5444
- style: getGridStyle(props.colCount, rowCount,
5445
- props.gutter, props.rowMode, props.rowHeight)
5446
- },
5447
- tiles: tilePositions.map(function(ps, i) {
5448
- return {
5449
- element: angular.element(tiles[i]),
5450
- style: getTileStyle(ps.position, ps.spans,
5451
- props.colCount, props.rowCount,
5452
- props.gutter, props.rowMode, props.rowHeight)
5453
- }
5454
- })
5379
+ element: angular.element(tiles[i]),
5380
+ style: getTileStyle(ps.position, ps.spans,
5381
+ props.colCount, props.rowCount,
5382
+ props.gutter, props.rowMode, props.rowHeight)
5455
5383
  }
5456
5384
  })
5457
- .reflow()
5458
- .performance();
5385
+ }
5386
+ })
5387
+ .reflow()
5388
+ .performance();
5459
5389
 
5460
5390
  // Report layout
5461
5391
  scope.mdOnLayout({
@@ -5607,20 +5537,23 @@ function GridListDirective($interpolate, $mdConstant, $mdGridLayout, $mdMedia) {
5607
5537
  }
5608
5538
 
5609
5539
  function getTileElements() {
5610
- return ctrl.tiles.map(function(tile) { return tile.element });
5540
+ return [].filter.call(element.children(), function(ele) {
5541
+ return ele.tagName == 'MD-GRID-TILE';
5542
+ });
5611
5543
  }
5612
5544
 
5613
5545
  /**
5614
5546
  * Gets an array of objects containing the rowspan and colspan for each tile.
5615
5547
  * @returns {Array<{row: number, col: number}>}
5616
5548
  */
5617
- function getTileSpans() {
5618
- return ctrl.tiles.map(function(tile) {
5549
+ function getTileSpans(tileElements) {
5550
+ return [].map.call(tileElements, function(ele) {
5551
+ var ctrl = angular.element(ele).controller('mdGridTile');
5619
5552
  return {
5620
5553
  row: parseInt(
5621
- $mdMedia.getResponsiveAttribute(tile.attrs, 'md-rowspan'), 10) || 1,
5554
+ $mdMedia.getResponsiveAttribute(ctrl.$attrs, 'md-rowspan'), 10) || 1,
5622
5555
  col: parseInt(
5623
- $mdMedia.getResponsiveAttribute(tile.attrs, 'md-colspan'), 10) || 1
5556
+ $mdMedia.getResponsiveAttribute(ctrl.$attrs, 'md-colspan'), 10) || 1
5624
5557
  };
5625
5558
  });
5626
5559
  }
@@ -5670,59 +5603,34 @@ GridListDirective.$inject = ["$interpolate", "$mdConstant", "$mdGridLayout", "$m
5670
5603
 
5671
5604
  /* @ngInject */
5672
5605
  function GridListController($timeout) {
5673
- this.invalidated = false;
5674
- this.tilesAdded = false;
5606
+ this.layoutInvalidated = false;
5607
+ this.tilesInvalidated = false;
5675
5608
  this.$timeout_ = $timeout;
5676
- this.tiles = [];
5677
5609
  this.layoutDelegate = angular.noop;
5678
5610
  }
5679
5611
  GridListController.$inject = ["$timeout"];
5680
5612
 
5681
5613
  GridListController.prototype = {
5682
- addTile: function(tileElement, tileAttrs, idx) {
5683
- var tile = { element: tileElement, attrs: tileAttrs };
5684
- if (angular.isUndefined(idx)) {
5685
- this.tiles.push(tile);
5686
- } else {
5687
- this.tiles.splice(idx, 0, tile);
5688
- }
5689
- this.tilesAdded = true;
5690
- this.invalidateLayout();
5691
- },
5692
-
5693
- removeTile: function(tileElement, tileAttrs) {
5694
- var idx = this._findTileIndex(tileAttrs);
5695
- if (idx === -1) {
5696
- return;
5697
- }
5698
- this.tiles.splice(idx, 1);
5614
+ invalidateTiles: function() {
5615
+ this.tilesInvalidated = true;
5699
5616
  this.invalidateLayout();
5700
5617
  },
5701
5618
 
5702
5619
  invalidateLayout: function() {
5703
- if (this.invalidated) {
5620
+ if (this.layoutInvalidated) {
5704
5621
  return;
5705
5622
  }
5706
- this.invalidated = true;
5623
+ this.layoutInvalidated = true;
5707
5624
  this.$timeout_(angular.bind(this, this.layout));
5708
5625
  },
5709
5626
 
5710
5627
  layout: function() {
5711
5628
  try {
5712
- this.layoutDelegate(this.tilesAdded);
5629
+ this.layoutDelegate(this.tilesInvalidated);
5713
5630
  } finally {
5714
- this.invalidated = false;
5715
- this.tilesAdded = false;
5716
- }
5717
- },
5718
-
5719
- _findTileIndex: function(tileAttrs) {
5720
- for (var i = 0; i < this.tiles.length; i++) {
5721
- if (this.tiles[i].attrs == tileAttrs) {
5722
- return i;
5723
- }
5631
+ this.layoutInvalidated = false;
5632
+ this.tilesInvalidated = false;
5724
5633
  }
5725
- return -1;
5726
5634
  }
5727
5635
  };
5728
5636
 
@@ -5989,6 +5897,10 @@ function GridTileDirective($mdMedia) {
5989
5897
  template: '<figure ng-transclude></figure>',
5990
5898
  transclude: true,
5991
5899
  scope: {},
5900
+ // Simple controller that exposes attributes to the grid directive
5901
+ controller: ["$attrs", function($attrs) {
5902
+ this.$attrs = $attrs;
5903
+ }],
5992
5904
  link: postLink
5993
5905
  };
5994
5906
 
@@ -6001,25 +5913,26 @@ function GridTileDirective($mdMedia) {
6001
5913
  attrs, angular.bind(gridCtrl, gridCtrl.invalidateLayout));
6002
5914
 
6003
5915
  // Tile registration/deregistration
6004
- // TODO(shyndman): Kind of gross to access parent scope like this.
6005
- // Consider other options.
6006
- gridCtrl.addTile(element, attrs, scope.$parent.$index);
5916
+ gridCtrl.invalidateTiles();
6007
5917
  scope.$on('$destroy', function() {
6008
5918
  unwatchAttrs();
6009
- gridCtrl.removeTile(element, attrs);
5919
+ gridCtrl.invalidateLayout();
6010
5920
  });
6011
5921
 
6012
5922
  if (angular.isDefined(scope.$parent.$index)) {
6013
5923
  scope.$watch(function() { return scope.$parent.$index; },
6014
5924
  function indexChanged(newIdx, oldIdx) {
6015
- gridCtrl.removeTile(element, attrs);
6016
- gridCtrl.addTile(element, attrs, newIdx);
5925
+ if (newIdx === oldIdx) {
5926
+ return;
5927
+ }
5928
+ gridCtrl.invalidateTiles();
6017
5929
  });
6018
5930
  }
6019
5931
  }
6020
5932
  }
6021
5933
  GridTileDirective.$inject = ["$mdMedia"];
6022
5934
 
5935
+
6023
5936
  function GridTileCaptionDirective() {
6024
5937
  return {
6025
5938
  template: '<figcaption ng-transclude></figcaption>',
@@ -6027,12 +5940,6 @@ function GridTileCaptionDirective() {
6027
5940
  };
6028
5941
  }
6029
5942
 
6030
- /*!
6031
- * Angular Material Design
6032
- * https://github.com/angular/material
6033
- * @license MIT
6034
- * v0.9.0-rc2
6035
- */
6036
5943
  /**
6037
5944
  * @ngdoc module
6038
5945
  * @name material.components.icon
@@ -6135,12 +6042,6 @@ function mdIconDirective($mdIcon, $mdTheming, $mdAria ) {
6135
6042
  }
6136
6043
  mdIconDirective.$inject = ["$mdIcon", "$mdTheming", "$mdAria"];
6137
6044
 
6138
- /*!
6139
- * Angular Material Design
6140
- * https://github.com/angular/material
6141
- * @license MIT
6142
- * v0.9.0-rc2
6143
- */
6144
6045
  angular
6145
6046
  .module('material.components.icon' )
6146
6047
  .provider('$mdIcon', MdIconProvider);
@@ -6604,437 +6505,171 @@ mdIconDirective.$inject = ["$mdIcon", "$mdTheming", "$mdAria"];
6604
6505
 
6605
6506
  }
6606
6507
 
6607
- /*!
6608
- * Angular Material Design
6609
- * https://github.com/angular/material
6610
- * @license MIT
6611
- * v0.9.0-rc2
6612
- */
6508
+ (function() {
6509
+
6613
6510
  /**
6614
6511
  * @ngdoc module
6615
- * @name material.components.list
6616
- * @description
6617
- * List module
6512
+ * @name material.components.input
6618
6513
  */
6619
- angular.module('material.components.list', [
6514
+
6515
+ angular.module('material.components.input', [
6620
6516
  'material.core'
6621
6517
  ])
6622
- .controller('MdListController', MdListController)
6623
- .directive('mdList', mdListDirective)
6624
- .directive('mdListItem', mdListItemDirective);
6518
+ .directive('mdInputContainer', mdInputContainerDirective)
6519
+ .directive('label', labelDirective)
6520
+ .directive('input', inputTextareaDirective)
6521
+ .directive('textarea', inputTextareaDirective)
6522
+ .directive('mdMaxlength', mdMaxlengthDirective)
6523
+ .directive('placeholder', placeholderDirective);
6625
6524
 
6626
6525
  /**
6627
6526
  * @ngdoc directive
6628
- * @name mdList
6629
- * @module material.components.list
6527
+ * @name mdInputContainer
6528
+ * @module material.components.input
6630
6529
  *
6631
6530
  * @restrict E
6632
6531
  *
6633
6532
  * @description
6634
- * The `<md-list>` directive is a list container for 1..n `<md-list-item>` tags.
6533
+ * `<md-input-container>` is the parent of any input or textarea element.
6534
+ *
6535
+ * Input and textarea elements will not behave properly unless the md-input-container
6536
+ * parent is provided.
6537
+ *
6538
+ * @param md-is-error {expression=} When the given expression evaluates to true, the input container will go into error state. Defaults to erroring if the input has been touched and is invalid.
6539
+ * @param md-no-float {boolean=} When present, placeholders will not be converted to floating labels
6635
6540
  *
6636
6541
  * @usage
6637
6542
  * <hljs lang="html">
6638
- * <md-list>
6639
- * <md-list-item class="md-2-line" ng-repeat="item in todos">
6640
- * <md-checkbox ng-model="item.done"></md-checkbox>
6641
- * <div class="md-list-item-text">
6642
- * <h3>{{item.title}}</h3>
6643
- * <p>{{item.description}}</p>
6644
- * </div>
6645
- * </md-list-item>
6646
- * </md-list>
6543
+ *
6544
+ * <md-input-container>
6545
+ * <label>Username</label>
6546
+ * <input type="text" ng-model="user.name">
6547
+ * </md-input-container>
6548
+ *
6549
+ * <md-input-container>
6550
+ * <label>Description</label>
6551
+ * <textarea ng-model="user.description"></textarea>
6552
+ * </md-input-container>
6553
+ *
6647
6554
  * </hljs>
6648
6555
  */
6556
+ function mdInputContainerDirective($mdTheming, $parse) {
6557
+ ContainerCtrl.$inject = ["$scope", "$element", "$attrs"];
6558
+ return {
6559
+ restrict: 'E',
6560
+ link: postLink,
6561
+ controller: ContainerCtrl
6562
+ };
6649
6563
 
6650
- function mdListDirective($mdTheming) {
6564
+ function postLink(scope, element, attr) {
6565
+ $mdTheming(element);
6566
+ }
6567
+ function ContainerCtrl($scope, $element, $attrs) {
6568
+ var self = this;
6569
+
6570
+ self.isErrorGetter = $attrs.mdIsError && $parse($attrs.mdIsError);
6571
+
6572
+ self.delegateClick = function() {
6573
+ self.input.focus();
6574
+ };
6575
+ self.element = $element;
6576
+ self.setFocused = function(isFocused) {
6577
+ $element.toggleClass('md-input-focused', !!isFocused);
6578
+ };
6579
+ self.setHasValue = function(hasValue) {
6580
+ $element.toggleClass('md-input-has-value', !!hasValue);
6581
+ };
6582
+ self.setInvalid = function(isInvalid) {
6583
+ $element.toggleClass('md-input-invalid', !!isInvalid);
6584
+ };
6585
+ $scope.$watch(function() {
6586
+ return self.label && self.input;
6587
+ }, function(hasLabelAndInput) {
6588
+ if (hasLabelAndInput && !self.label.attr('for')) {
6589
+ self.label.attr('for', self.input.attr('id'));
6590
+ }
6591
+ });
6592
+ }
6593
+ }
6594
+ mdInputContainerDirective.$inject = ["$mdTheming", "$parse"];
6595
+
6596
+ function labelDirective() {
6651
6597
  return {
6652
6598
  restrict: 'E',
6653
- compile: function(tEl) {
6654
- tEl[0].setAttribute('role', 'list');
6655
- return $mdTheming;
6599
+ require: '^?mdInputContainer',
6600
+ link: function(scope, element, attr, containerCtrl) {
6601
+ if (!containerCtrl || attr.mdNoFloat) return;
6602
+
6603
+ containerCtrl.label = element;
6604
+ scope.$on('$destroy', function() {
6605
+ containerCtrl.label = null;
6606
+ });
6656
6607
  }
6657
6608
  };
6658
6609
  }
6659
- mdListDirective.$inject = ["$mdTheming"];
6610
+
6660
6611
  /**
6661
6612
  * @ngdoc directive
6662
- * @name mdListItem
6663
- * @module material.components.list
6664
- *
6613
+ * @name mdInput
6665
6614
  * @restrict E
6615
+ * @module material.components.input
6666
6616
  *
6667
6617
  * @description
6668
- * The `<md-list-item>` directive is a container intended for row items in a `<md-list>` container.
6618
+ * Use the `<input>` or the `<textarea>` as a child of an `<md-input-container>`.
6619
+ *
6620
+ * @param {number=} md-maxlength The maximum number of characters allowed in this input. If this is specified, a character counter will be shown underneath the input.<br/><br/>
6621
+ * The purpose of **`md-maxlength`** is exactly to show the max length counter text. If you don't want the counter text and only need "plain" validation, you can use the "simple" `ng-maxlength` or maxlength attributes.
6622
+ * @param {string=} aria-label Aria-label is required when no label is present. A warning message will be logged in the console if not present.
6623
+ * @param {string=} placeholder An alternative approach to using aria-label when the label is not present. The placeholder text is copied to the aria-label attribute.
6669
6624
  *
6670
6625
  * @usage
6671
6626
  * <hljs lang="html">
6672
- * <md-list>
6673
- * <md-list-item>
6674
- * Item content in list
6675
- * </md-list-item>
6676
- * </md-list>
6627
+ * <md-input-container>
6628
+ * <label>Color</label>
6629
+ * <input type="text" ng-model="color" required md-maxlength="10">
6630
+ * </md-input-container>
6631
+ * </hljs>
6632
+ * <h3>With Errors (uses [ngMessages](https://docs.angularjs.org/api/ngMessages))</h3>
6633
+ * <hljs lang="html">
6634
+ * <form name="userForm">
6635
+ * <md-input-container>
6636
+ * <label>Last Name</label>
6637
+ * <input name="lastName" ng-model="lastName" required md-maxlength="10" minlength="4">
6638
+ * <div ng-messages="userForm.lastName.$error" ng-show="userForm.lastName.$dirty">
6639
+ * <div ng-message="required">This is required!</div>
6640
+ * <div ng-message="md-maxlength">That's too long!</div>
6641
+ * <div ng-message="minlength">That's too short!</div>
6642
+ * </div>
6643
+ * </md-input-container>
6644
+ * <md-input-container>
6645
+ * <label>Biography</label>
6646
+ * <textarea name="bio" ng-model="biography" required md-maxlength="150"></textarea>
6647
+ * <div ng-messages="userForm.bio.$error" ng-show="userForm.bio.$dirty">
6648
+ * <div ng-message="required">This is required!</div>
6649
+ * <div ng-message="md-maxlength">That's too long!</div>
6650
+ * </div>
6651
+ * </md-input-container>
6652
+ * <md-input-container>
6653
+ * <input aria-label='title' ng-model='title'>
6654
+ * </md-input-container>
6655
+ * <md-input-container>
6656
+ * <input placeholder='title' ng-model='title'>
6657
+ * </md-input-container>
6658
+ * </form>
6677
6659
  * </hljs>
6678
6660
  *
6661
+ * Behaves like the [AngularJS input directive](https://docs.angularjs.org/api/ng/directive/input).
6662
+ *
6679
6663
  */
6680
- function mdListItemDirective($mdAria, $mdConstant, $timeout) {
6681
- var proxiedTypes = ['md-checkbox', 'md-switch'];
6664
+
6665
+ function inputTextareaDirective($mdUtil, $window, $mdAria) {
6682
6666
  return {
6683
6667
  restrict: 'E',
6684
- controller: 'MdListController',
6685
- compile: function(tEl, tAttrs) {
6686
- // Check for proxy controls (no ng-click on parent, and a control inside)
6687
- var secondaryItem = tEl[0].querySelector('.md-secondary');
6688
- var hasProxiedElement;
6689
- var proxyElement;
6668
+ require: ['^?mdInputContainer', '?ngModel'],
6669
+ link: postLink
6670
+ };
6690
6671
 
6691
- tEl[0].setAttribute('role', 'listitem');
6692
-
6693
- if (!tAttrs.ngClick) {
6694
- for (var i = 0, type; type = proxiedTypes[i]; ++i) {
6695
- if (proxyElement = tEl[0].querySelector(type)) {
6696
- hasProxiedElement = true;
6697
- break;
6698
- }
6699
- }
6700
- if (hasProxiedElement) {
6701
- wrapIn('div');
6702
- } else {
6703
- tEl.addClass('md-no-proxy');
6704
- }
6705
- } else {
6706
- wrapIn('button');
6707
- }
6708
- setupToggleAria();
6709
-
6710
-
6711
- function setupToggleAria() {
6712
- var toggleTypes = ['md-switch', 'md-checkbox'];
6713
- var toggle;
6714
-
6715
- for (var i = 0, toggleType; toggleType = toggleTypes[i]; ++i) {
6716
- if (toggle = tEl.find(toggleType)[0]) {
6717
- if (!toggle.hasAttribute('aria-label')) {
6718
- var p = tEl.find('p')[0];
6719
- if (!p) return;
6720
- toggle.setAttribute('aria-label', 'Toggle ' + p.textContent);
6721
- }
6722
- }
6723
- }
6724
- }
6725
-
6726
-
6727
- function wrapIn(type) {
6728
- var container;
6729
- if (type == 'div') {
6730
- container = angular.element('<div class="md-no-style md-list-item-inner">');
6731
- container.append(tEl.contents());
6732
- tEl.addClass('md-proxy-focus');
6733
- } else {
6734
- container = angular.element('<md-button class="md-no-style"><div class="md-list-item-inner"></div></md-button>');
6735
- container[0].setAttribute('ng-click', tEl[0].getAttribute('ng-click'));
6736
- tEl[0].removeAttribute('ng-click');
6737
- container.children().eq(0).append(tEl.contents());
6738
- }
6739
-
6740
- tEl[0].setAttribute('tabindex', '-1');
6741
- tEl.append(container);
6742
-
6743
- if (secondaryItem && secondaryItem.hasAttribute('ng-click')) {
6744
- $mdAria.expect(secondaryItem, 'aria-label');
6745
- var buttonWrapper = angular.element('<md-button class="md-secondary-container md-icon-button">');
6746
- buttonWrapper.attr('ng-click', secondaryItem.getAttribute('ng-click'));
6747
- secondaryItem.removeAttribute('ng-click');
6748
- secondaryItem.setAttribute('tabindex', '-1');
6749
- secondaryItem.classList.remove('md-secondary');
6750
- buttonWrapper.append(secondaryItem);
6751
- secondaryItem = buttonWrapper[0];
6752
- }
6753
-
6754
- // Check for a secondary item and move it outside
6755
- if ( secondaryItem && (
6756
- secondaryItem.hasAttribute('ng-click') ||
6757
- ( tAttrs.ngClick &&
6758
- isProxiedElement(secondaryItem) )
6759
- )) {
6760
- tEl.addClass('md-with-secondary');
6761
- tEl.append(secondaryItem);
6762
- }
6763
- }
6764
-
6765
- function isProxiedElement(el) {
6766
- return proxiedTypes.indexOf(el.nodeName.toLowerCase()) != -1;
6767
- }
6768
-
6769
- return postLink;
6770
-
6771
- function postLink($scope, $element, $attr, ctrl) {
6772
-
6773
- var proxies = [];
6774
-
6775
- computeProxies();
6776
- computeClickable();
6777
-
6778
- if ($element.hasClass('md-proxy-focus') && proxies.length) {
6779
- angular.forEach(proxies, function(proxy) {
6780
- proxy = angular.element(proxy);
6781
-
6782
- $scope.mouseActive = false;
6783
- proxy.on('mousedown', function() {
6784
- $scope.mouseActive = true;
6785
- $timeout(function(){
6786
- $scope.mouseActive = false;
6787
- }, 100);
6788
- })
6789
- .on('focus', function() {
6790
- if ($scope.mouseActive === false) { $element.addClass('md-focused'); }
6791
- proxy.on('blur', function proxyOnBlur() {
6792
- $element.removeClass('md-focused');
6793
- proxy.off('blur', proxyOnBlur);
6794
- });
6795
- });
6796
- });
6797
- }
6798
-
6799
- function computeProxies() {
6800
- var children = $element.children();
6801
- if (children.length && !children[0].hasAttribute('ng-click')) {
6802
- angular.forEach(proxiedTypes, function(type) {
6803
- angular.forEach($element[0].firstElementChild.querySelectorAll(type), function(child) {
6804
- proxies.push(child);
6805
- });
6806
- });
6807
- }
6808
- }
6809
- function computeClickable() {
6810
- if (proxies.length || $element[0].firstElementChild.hasAttribute('ng-click')) {
6811
- $element.addClass('md-clickable');
6812
-
6813
- ctrl.attachRipple($scope, angular.element($element[0].querySelector('.md-no-style')));
6814
- }
6815
- }
6816
-
6817
- if (!$element[0].firstElementChild.hasAttribute('ng-click') && !proxies.length) {
6818
- $element[0].firstElementChild.addEventListener('keypress', function(e) {
6819
- if (e.target.nodeName != 'INPUT') {
6820
- if (e.keyCode == $mdConstant.KEY_CODE.SPACE) {
6821
- $element[0].firstElementChild.click();
6822
- e.preventDefault();
6823
- e.stopPropagation();
6824
- }
6825
- }
6826
- });
6827
- }
6828
-
6829
- $element.off('click');
6830
- $element.off('keypress');
6831
-
6832
- if (proxies.length) {
6833
- $element.children().eq(0).on('click', function(e) {
6834
- if ($element[0].firstElementChild.contains(e.target)) {
6835
- angular.forEach(proxies, function(proxy) {
6836
- if (e.target !== proxy && !proxy.contains(e.target)) {
6837
- angular.element(proxy).triggerHandler('click');
6838
- }
6839
- });
6840
- }
6841
- });
6842
- }
6843
- }
6844
- }
6845
- };
6846
- }
6847
- mdListItemDirective.$inject = ["$mdAria", "$mdConstant", "$timeout"];
6848
-
6849
- /*
6850
- * @private
6851
- * @ngdoc controller
6852
- * @name MdListController
6853
- * @module material.components.list
6854
- *
6855
- */
6856
- function MdListController($scope, $element, $mdInkRipple) {
6857
- var ctrl = this;
6858
- ctrl.attachRipple = attachRipple;
6859
-
6860
- function attachRipple (scope, element) {
6861
- var options = {};
6862
- $mdInkRipple.attachListControlBehavior(scope, element, options);
6863
- }
6864
- }
6865
- MdListController.$inject = ["$scope", "$element", "$mdInkRipple"];
6866
-
6867
- /*!
6868
- * Angular Material Design
6869
- * https://github.com/angular/material
6870
- * @license MIT
6871
- * v0.9.0-rc2
6872
- */
6873
- (function() {
6874
-
6875
- /**
6876
- * @ngdoc module
6877
- * @name material.components.input
6878
- */
6879
-
6880
- angular.module('material.components.input', [
6881
- 'material.core'
6882
- ])
6883
- .directive('mdInputContainer', mdInputContainerDirective)
6884
- .directive('label', labelDirective)
6885
- .directive('input', inputTextareaDirective)
6886
- .directive('textarea', inputTextareaDirective)
6887
- .directive('mdMaxlength', mdMaxlengthDirective)
6888
- .directive('placeholder', placeholderDirective);
6889
-
6890
- /**
6891
- * @ngdoc directive
6892
- * @name mdInputContainer
6893
- * @module material.components.input
6894
- *
6895
- * @restrict E
6896
- *
6897
- * @description
6898
- * `<md-input-container>` is the parent of any input or textarea element.
6899
- *
6900
- * Input and textarea elements will not behave properly unless the md-input-container
6901
- * parent is provided.
6902
- *
6903
- * @param md-is-error {expression=} When the given expression evaluates to true, the input container will go into error state. Defaults to erroring if the input has been touched and is invalid.
6904
- * @param md-no-float {boolean=} When present, placeholders will not be converted to floating labels
6905
- *
6906
- * @usage
6907
- * <hljs lang="html">
6908
- *
6909
- * <md-input-container>
6910
- * <label>Username</label>
6911
- * <input type="text" ng-model="user.name">
6912
- * </md-input-container>
6913
- *
6914
- * <md-input-container>
6915
- * <label>Description</label>
6916
- * <textarea ng-model="user.description"></textarea>
6917
- * </md-input-container>
6918
- *
6919
- * </hljs>
6920
- */
6921
- function mdInputContainerDirective($mdTheming, $parse) {
6922
- ContainerCtrl.$inject = ["$scope", "$element", "$attrs"];
6923
- return {
6924
- restrict: 'E',
6925
- link: postLink,
6926
- controller: ContainerCtrl
6927
- };
6928
-
6929
- function postLink(scope, element, attr) {
6930
- $mdTheming(element);
6931
- }
6932
- function ContainerCtrl($scope, $element, $attrs) {
6933
- var self = this;
6934
-
6935
- self.isErrorGetter = $attrs.mdIsError && $parse($attrs.mdIsError);
6936
-
6937
- self.delegateClick = function() {
6938
- self.input.focus();
6939
- };
6940
- self.element = $element;
6941
- self.setFocused = function(isFocused) {
6942
- $element.toggleClass('md-input-focused', !!isFocused);
6943
- };
6944
- self.setHasValue = function(hasValue) {
6945
- $element.toggleClass('md-input-has-value', !!hasValue);
6946
- };
6947
- self.setInvalid = function(isInvalid) {
6948
- $element.toggleClass('md-input-invalid', !!isInvalid);
6949
- };
6950
- $scope.$watch(function() {
6951
- return self.label && self.input;
6952
- }, function(hasLabelAndInput) {
6953
- if (hasLabelAndInput && !self.label.attr('for')) {
6954
- self.label.attr('for', self.input.attr('id'));
6955
- }
6956
- });
6957
- }
6958
- }
6959
- mdInputContainerDirective.$inject = ["$mdTheming", "$parse"];
6960
-
6961
- function labelDirective() {
6962
- return {
6963
- restrict: 'E',
6964
- require: '^?mdInputContainer',
6965
- link: function(scope, element, attr, containerCtrl) {
6966
- if (!containerCtrl || attr.mdNoFloat) return;
6967
-
6968
- containerCtrl.label = element;
6969
- scope.$on('$destroy', function() {
6970
- containerCtrl.label = null;
6971
- });
6972
- }
6973
- };
6974
- }
6975
-
6976
- /**
6977
- * @ngdoc directive
6978
- * @name mdInput
6979
- * @restrict E
6980
- * @module material.components.input
6981
- *
6982
- * @description
6983
- * Use the `<input>` or the `<textarea>` as a child of an `<md-input-container>`.
6984
- *
6985
- * @param {number=} md-maxlength The maximum number of characters allowed in this input. If this is specified, a character counter will be shown underneath the input.<br/><br/>
6986
- * The purpose of **`md-maxlength`** is exactly to show the max length counter text. If you don't want the counter text and only need "plain" validation, you can use the "simple" `ng-maxlength` or maxlength attributes.
6987
- * @param {string=} aria-label Aria-label is required when no label is present. A warning message will be logged in the console if not present.
6988
- * @param {string=} placeholder An alternative approach to using aria-label when the label is not present. The placeholder text is copied to the aria-label attribute.
6989
- *
6990
- * @usage
6991
- * <hljs lang="html">
6992
- * <md-input-container>
6993
- * <label>Color</label>
6994
- * <input type="text" ng-model="color" required md-maxlength="10">
6995
- * </md-input-container>
6996
- * </hljs>
6997
- * <h3>With Errors (uses [ngMessages](https://docs.angularjs.org/api/ngMessages))</h3>
6998
- * <hljs lang="html">
6999
- * <form name="userForm">
7000
- * <md-input-container>
7001
- * <label>Last Name</label>
7002
- * <input name="lastName" ng-model="lastName" required md-maxlength="10" minlength="4">
7003
- * <div ng-messages="userForm.lastName.$error" ng-show="userForm.lastName.$dirty">
7004
- * <div ng-message="required">This is required!</div>
7005
- * <div ng-message="md-maxlength">That's too long!</div>
7006
- * <div ng-message="minlength">That's too short!</div>
7007
- * </div>
7008
- * </md-input-container>
7009
- * <md-input-container>
7010
- * <label>Biography</label>
7011
- * <textarea name="bio" ng-model="biography" required md-maxlength="150"></textarea>
7012
- * <div ng-messages="userForm.bio.$error" ng-show="userForm.bio.$dirty">
7013
- * <div ng-message="required">This is required!</div>
7014
- * <div ng-message="md-maxlength">That's too long!</div>
7015
- * </div>
7016
- * </md-input-container>
7017
- * <md-input-container>
7018
- * <input aria-label='title' ng-model='title'>
7019
- * </md-input-container>
7020
- * <md-input-container>
7021
- * <input placeholder='title' ng-model='title'>
7022
- * </md-input-container>
7023
- * </form>
7024
- * </hljs>
7025
- *
7026
- * Behaves like the [AngularJS input directive](https://docs.angularjs.org/api/ng/directive/input).
7027
- *
7028
- */
7029
-
7030
- function inputTextareaDirective($mdUtil, $window, $mdAria) {
7031
- return {
7032
- restrict: 'E',
7033
- require: ['^?mdInputContainer', '?ngModel'],
7034
- link: postLink
7035
- };
7036
-
7037
- function postLink(scope, element, attr, ctrls) {
6672
+ function postLink(scope, element, attr, ctrls) {
7038
6673
 
7039
6674
  var containerCtrl = ctrls[0];
7040
6675
  var ngModelCtrl = ctrls[1] || $mdUtil.fakeNgModel();
@@ -7181,55 +6816,313 @@ function mdMaxlengthDirective($animate) {
7181
6816
  $animate.enter(charCountEl, containerCtrl.element,
7182
6817
  angular.element(containerCtrl.element[0].lastElementChild));
7183
6818
  }
7184
- renderCharCount();
7185
- } else {
7186
- $animate.leave(charCountEl);
7187
- }
7188
- });
6819
+ renderCharCount();
6820
+ } else {
6821
+ $animate.leave(charCountEl);
6822
+ }
6823
+ });
6824
+
6825
+ ngModelCtrl.$validators['md-maxlength'] = function(modelValue, viewValue) {
6826
+ if (!angular.isNumber(maxlength) || maxlength < 0) {
6827
+ return true;
6828
+ }
6829
+ return ( modelValue || element.val() || viewValue || '' ).length <= maxlength;
6830
+ };
6831
+
6832
+ function renderCharCount(value) {
6833
+ charCountEl.text( ( element.val() || value || '' ).length + '/' + maxlength );
6834
+ return value;
6835
+ }
6836
+ }
6837
+ }
6838
+ mdMaxlengthDirective.$inject = ["$animate"];
6839
+
6840
+ function placeholderDirective($log) {
6841
+ return {
6842
+ restrict: 'A',
6843
+ require: '^^?mdInputContainer',
6844
+ priority:200,
6845
+ link: postLink
6846
+ };
6847
+
6848
+ function postLink(scope, element, attr, inputContainer) {
6849
+ if (!inputContainer) return;
6850
+ if (angular.isDefined(inputContainer.element.attr('md-no-float'))) return;
6851
+
6852
+ var placeholderText = attr.placeholder;
6853
+ element.removeAttr('placeholder');
6854
+
6855
+ if ( inputContainer.element.find('label').length == 0 ) {
6856
+ var placeholder = '<label ng-click="delegateClick()">' + placeholderText + '</label>';
6857
+
6858
+ inputContainer.element.addClass('md-icon-float');
6859
+ inputContainer.element.prepend(placeholder);
6860
+ } else {
6861
+ $log.warn("The placeholder='" + placeholderText + "' will be ignored since this md-input-container has a child label element.");
6862
+ }
6863
+
6864
+ }
6865
+ }
6866
+ placeholderDirective.$inject = ["$log"];
6867
+
6868
+ })();
6869
+
6870
+ /**
6871
+ * @ngdoc module
6872
+ * @name material.components.list
6873
+ * @description
6874
+ * List module
6875
+ */
6876
+ angular.module('material.components.list', [
6877
+ 'material.core'
6878
+ ])
6879
+ .controller('MdListController', MdListController)
6880
+ .directive('mdList', mdListDirective)
6881
+ .directive('mdListItem', mdListItemDirective);
6882
+
6883
+ /**
6884
+ * @ngdoc directive
6885
+ * @name mdList
6886
+ * @module material.components.list
6887
+ *
6888
+ * @restrict E
6889
+ *
6890
+ * @description
6891
+ * The `<md-list>` directive is a list container for 1..n `<md-list-item>` tags.
6892
+ *
6893
+ * @usage
6894
+ * <hljs lang="html">
6895
+ * <md-list>
6896
+ * <md-list-item class="md-2-line" ng-repeat="item in todos">
6897
+ * <md-checkbox ng-model="item.done"></md-checkbox>
6898
+ * <div class="md-list-item-text">
6899
+ * <h3>{{item.title}}</h3>
6900
+ * <p>{{item.description}}</p>
6901
+ * </div>
6902
+ * </md-list-item>
6903
+ * </md-list>
6904
+ * </hljs>
6905
+ */
6906
+
6907
+ function mdListDirective($mdTheming) {
6908
+ return {
6909
+ restrict: 'E',
6910
+ compile: function(tEl) {
6911
+ tEl[0].setAttribute('role', 'list');
6912
+ return $mdTheming;
6913
+ }
6914
+ };
6915
+ }
6916
+ mdListDirective.$inject = ["$mdTheming"];
6917
+ /**
6918
+ * @ngdoc directive
6919
+ * @name mdListItem
6920
+ * @module material.components.list
6921
+ *
6922
+ * @restrict E
6923
+ *
6924
+ * @description
6925
+ * The `<md-list-item>` directive is a container intended for row items in a `<md-list>` container.
6926
+ *
6927
+ * @usage
6928
+ * <hljs lang="html">
6929
+ * <md-list>
6930
+ * <md-list-item>
6931
+ * Item content in list
6932
+ * </md-list-item>
6933
+ * </md-list>
6934
+ * </hljs>
6935
+ *
6936
+ */
6937
+ function mdListItemDirective($mdAria, $mdConstant, $timeout) {
6938
+ var proxiedTypes = ['md-checkbox', 'md-switch'];
6939
+ return {
6940
+ restrict: 'E',
6941
+ controller: 'MdListController',
6942
+ compile: function(tEl, tAttrs) {
6943
+ // Check for proxy controls (no ng-click on parent, and a control inside)
6944
+ var secondaryItem = tEl[0].querySelector('.md-secondary');
6945
+ var hasProxiedElement;
6946
+ var proxyElement;
6947
+
6948
+ tEl[0].setAttribute('role', 'listitem');
6949
+
6950
+ if (!tAttrs.ngClick) {
6951
+ for (var i = 0, type; type = proxiedTypes[i]; ++i) {
6952
+ if (proxyElement = tEl[0].querySelector(type)) {
6953
+ hasProxiedElement = true;
6954
+ break;
6955
+ }
6956
+ }
6957
+ if (hasProxiedElement) {
6958
+ wrapIn('div');
6959
+ } else {
6960
+ tEl.addClass('md-no-proxy');
6961
+ }
6962
+ } else {
6963
+ wrapIn('button');
6964
+ }
6965
+ setupToggleAria();
6966
+
6967
+
6968
+ function setupToggleAria() {
6969
+ var toggleTypes = ['md-switch', 'md-checkbox'];
6970
+ var toggle;
6971
+
6972
+ for (var i = 0, toggleType; toggleType = toggleTypes[i]; ++i) {
6973
+ if (toggle = tEl.find(toggleType)[0]) {
6974
+ if (!toggle.hasAttribute('aria-label')) {
6975
+ var p = tEl.find('p')[0];
6976
+ if (!p) return;
6977
+ toggle.setAttribute('aria-label', 'Toggle ' + p.textContent);
6978
+ }
6979
+ }
6980
+ }
6981
+ }
6982
+
6983
+
6984
+ function wrapIn(type) {
6985
+ var container;
6986
+ if (type == 'div') {
6987
+ container = angular.element('<div class="md-no-style md-list-item-inner">');
6988
+ container.append(tEl.contents());
6989
+ tEl.addClass('md-proxy-focus');
6990
+ } else {
6991
+ container = angular.element('<md-button class="md-no-style"><div class="md-list-item-inner"></div></md-button>');
6992
+ container[0].setAttribute('ng-click', tEl[0].getAttribute('ng-click'));
6993
+ tEl[0].removeAttribute('ng-click');
6994
+ container.children().eq(0).append(tEl.contents());
6995
+ }
6996
+
6997
+ tEl[0].setAttribute('tabindex', '-1');
6998
+ tEl.append(container);
6999
+
7000
+ if (secondaryItem && secondaryItem.hasAttribute('ng-click')) {
7001
+ $mdAria.expect(secondaryItem, 'aria-label');
7002
+ var buttonWrapper = angular.element('<md-button class="md-secondary-container md-icon-button">');
7003
+ buttonWrapper.attr('ng-click', secondaryItem.getAttribute('ng-click'));
7004
+ secondaryItem.removeAttribute('ng-click');
7005
+ secondaryItem.setAttribute('tabindex', '-1');
7006
+ secondaryItem.classList.remove('md-secondary');
7007
+ buttonWrapper.append(secondaryItem);
7008
+ secondaryItem = buttonWrapper[0];
7009
+ }
7010
+
7011
+ // Check for a secondary item and move it outside
7012
+ if ( secondaryItem && (
7013
+ secondaryItem.hasAttribute('ng-click') ||
7014
+ ( tAttrs.ngClick &&
7015
+ isProxiedElement(secondaryItem) )
7016
+ )) {
7017
+ tEl.addClass('md-with-secondary');
7018
+ tEl.append(secondaryItem);
7019
+ }
7020
+ }
7021
+
7022
+ function isProxiedElement(el) {
7023
+ return proxiedTypes.indexOf(el.nodeName.toLowerCase()) != -1;
7024
+ }
7025
+
7026
+ return postLink;
7027
+
7028
+ function postLink($scope, $element, $attr, ctrl) {
7029
+
7030
+ var proxies = [],
7031
+ firstChild = $element[0].firstElementChild,
7032
+ hasClick = firstChild && firstChild.hasAttribute('ng-click');
7033
+
7034
+ computeProxies();
7035
+ computeClickable();
7036
+
7037
+ if ($element.hasClass('md-proxy-focus') && proxies.length) {
7038
+ angular.forEach(proxies, function(proxy) {
7039
+ proxy = angular.element(proxy);
7040
+
7041
+ $scope.mouseActive = false;
7042
+ proxy.on('mousedown', function() {
7043
+ $scope.mouseActive = true;
7044
+ $timeout(function(){
7045
+ $scope.mouseActive = false;
7046
+ }, 100);
7047
+ })
7048
+ .on('focus', function() {
7049
+ if ($scope.mouseActive === false) { $element.addClass('md-focused'); }
7050
+ proxy.on('blur', function proxyOnBlur() {
7051
+ $element.removeClass('md-focused');
7052
+ proxy.off('blur', proxyOnBlur);
7053
+ });
7054
+ });
7055
+ });
7056
+ }
7057
+
7058
+ function computeProxies() {
7059
+ var children = $element.children();
7060
+ if (children.length && !children[0].hasAttribute('ng-click')) {
7061
+ angular.forEach(proxiedTypes, function(type) {
7062
+ angular.forEach(firstChild.querySelectorAll(type), function(child) {
7063
+ proxies.push(child);
7064
+ });
7065
+ });
7066
+ }
7067
+ }
7068
+ function computeClickable() {
7069
+ if (proxies.length || hasClick) {
7070
+ $element.addClass('md-clickable');
7071
+
7072
+ ctrl.attachRipple($scope, angular.element($element[0].querySelector('.md-no-style')));
7073
+ }
7074
+ }
7075
+
7076
+ if (!hasClick && !proxies.length) {
7077
+ firstChild.addEventListener('keypress', function(e) {
7078
+ if (e.target.nodeName != 'INPUT') {
7079
+ if (e.keyCode == $mdConstant.KEY_CODE.SPACE) {
7080
+ firstChild.click();
7081
+ e.preventDefault();
7082
+ e.stopPropagation();
7083
+ }
7084
+ }
7085
+ });
7086
+ }
7189
7087
 
7190
- ngModelCtrl.$validators['md-maxlength'] = function(modelValue, viewValue) {
7191
- if (!angular.isNumber(maxlength) || maxlength < 0) {
7192
- return true;
7193
- }
7194
- return ( modelValue || element.val() || viewValue || '' ).length <= maxlength;
7195
- };
7088
+ $element.off('click');
7089
+ $element.off('keypress');
7196
7090
 
7197
- function renderCharCount(value) {
7198
- charCountEl.text( ( element.val() || value || '' ).length + '/' + maxlength );
7199
- return value;
7091
+ if (proxies.length && firstChild) {
7092
+ $element.children().eq(0).on('click', function(e) {
7093
+ if (firstChild.contains(e.target)) {
7094
+ angular.forEach(proxies, function(proxy) {
7095
+ if (e.target !== proxy && !proxy.contains(e.target)) {
7096
+ angular.element(proxy).triggerHandler('click');
7097
+ }
7098
+ });
7099
+ }
7100
+ });
7101
+ }
7102
+ }
7200
7103
  }
7201
- }
7202
- }
7203
- mdMaxlengthDirective.$inject = ["$animate"];
7204
-
7205
- function placeholderDirective() {
7206
- return {
7207
- restrict: 'A',
7208
- require: '^^?mdInputContainer',
7209
- link: postLink
7210
7104
  };
7105
+ }
7106
+ mdListItemDirective.$inject = ["$mdAria", "$mdConstant", "$timeout"];
7211
7107
 
7212
- function postLink(scope, element, attr, inputContainer) {
7213
- if (!inputContainer) return;
7214
- if (angular.isDefined(inputContainer.element.attr('md-no-float'))) return;
7215
-
7216
- var placeholderText = attr.placeholder;
7217
- element.removeAttr('placeholder');
7108
+ /*
7109
+ * @private
7110
+ * @ngdoc controller
7111
+ * @name MdListController
7112
+ * @module material.components.list
7113
+ *
7114
+ */
7115
+ function MdListController($scope, $element, $mdInkRipple) {
7116
+ var ctrl = this;
7117
+ ctrl.attachRipple = attachRipple;
7218
7118
 
7219
- var placeholder = '<div class="md-placeholder" ng-click="delegateClick()">' +
7220
- placeholderText + '</div>';
7221
- inputContainer.element.append(placeholder);
7119
+ function attachRipple (scope, element) {
7120
+ var options = {};
7121
+ $mdInkRipple.attachListControlBehavior(scope, element, options);
7222
7122
  }
7223
7123
  }
7124
+ MdListController.$inject = ["$scope", "$element", "$mdInkRipple"];
7224
7125
 
7225
- })();
7226
-
7227
- /*!
7228
- * Angular Material Design
7229
- * https://github.com/angular/material
7230
- * @license MIT
7231
- * v0.9.0-rc2
7232
- */
7233
7126
  /**
7234
7127
  * @ngdoc module
7235
7128
  * @name material.components.progressCircular
@@ -7330,12 +7223,6 @@ function MdProgressCircularDirective($mdConstant, $mdTheming) {
7330
7223
  }
7331
7224
  MdProgressCircularDirective.$inject = ["$mdConstant", "$mdTheming"];
7332
7225
 
7333
- /*!
7334
- * Angular Material Design
7335
- * https://github.com/angular/material
7336
- * @license MIT
7337
- * v0.9.0-rc2
7338
- */
7339
7226
  /**
7340
7227
  * @ngdoc module
7341
7228
  * @name material.components.progressLinear
@@ -7453,12 +7340,6 @@ var transforms = (function() {
7453
7340
  }
7454
7341
  })();
7455
7342
 
7456
- /*!
7457
- * Angular Material Design
7458
- * https://github.com/angular/material
7459
- * @license MIT
7460
- * v0.9.0-rc2
7461
- */
7462
7343
  /**
7463
7344
  * @ngdoc module
7464
7345
  * @name material.components.radioButton
@@ -7762,12 +7643,6 @@ function mdRadioButtonDirective($mdAria, $mdUtil, $mdTheming) {
7762
7643
  }
7763
7644
  mdRadioButtonDirective.$inject = ["$mdAria", "$mdUtil", "$mdTheming"];
7764
7645
 
7765
- /*!
7766
- * Angular Material Design
7767
- * https://github.com/angular/material
7768
- * @license MIT
7769
- * v0.9.0-rc2
7770
- */
7771
7646
  /**
7772
7647
  * @ngdoc module
7773
7648
  * @name material.components.select
@@ -8635,7 +8510,7 @@ function SelectProvider($$interimElementProvider) {
8635
8510
  opts.target.attr('aria-expanded', 'false');
8636
8511
 
8637
8512
 
8638
- angular.element($window).off('resize', opts.resizefn);
8513
+ angular.element($window).off('resize', opts.resizeFn);
8639
8514
  angular.element($window).off('orientationchange', opts.resizefn);
8640
8515
  opts.resizeFn = undefined;
8641
8516
 
@@ -8647,7 +8522,9 @@ function SelectProvider($$interimElementProvider) {
8647
8522
  return $mdUtil.transitionEndPromise(element, { timeout: 350 }).then(function() {
8648
8523
  element.removeClass('md-active');
8649
8524
  opts.backdrop && opts.backdrop.remove();
8650
- opts.parent[0].removeChild(element[0]); // use browser to avoid $destroy event
8525
+ if (element[0].parentNode === opts.parent[0]) {
8526
+ opts.parent[0].removeChild(element[0]); // use browser to avoid $destroy event
8527
+ }
8651
8528
  if (opts.disableParentScroll) {
8652
8529
  opts.restoreScroll();
8653
8530
  }
@@ -8811,12 +8688,6 @@ function nodesToArray(nodes) {
8811
8688
  return results;
8812
8689
  }
8813
8690
 
8814
- /*!
8815
- * Angular Material Design
8816
- * https://github.com/angular/material
8817
- * @license MIT
8818
- * v0.9.0-rc2
8819
- */
8820
8691
  /**
8821
8692
  * @ngdoc module
8822
8693
  * @name material.components.sidenav
@@ -8859,13 +8730,13 @@ angular.module('material.components.sidenav', [
8859
8730
  * });
8860
8731
  * // Async open the given sidenav
8861
8732
  * $mdSidenav(componentId)
8862
- * .open();
8733
+ * .open()
8863
8734
  * .then(function(){
8864
8735
  * $log.debug('opened');
8865
8736
  * });
8866
8737
  * // Async close the given sidenav
8867
8738
  * $mdSidenav(componentId)
8868
- * .close();
8739
+ * .close()
8869
8740
  * .then(function(){
8870
8741
  * $log.debug('closed');
8871
8742
  * });
@@ -9231,12 +9102,6 @@ function SidenavController($scope, $element, $attrs, $mdComponentRegistry, $q) {
9231
9102
  }
9232
9103
  SidenavController.$inject = ["$scope", "$element", "$attrs", "$mdComponentRegistry", "$q"];
9233
9104
 
9234
- /*!
9235
- * Angular Material Design
9236
- * https://github.com/angular/material
9237
- * @license MIT
9238
- * v0.9.0-rc2
9239
- */
9240
9105
  /**
9241
9106
  * @ngdoc module
9242
9107
  * @name material.components.slider
@@ -9629,12 +9494,6 @@ function SliderDirective($$rAF, $window, $mdAria, $mdUtil, $mdConstant, $mdThemi
9629
9494
  }
9630
9495
  SliderDirective.$inject = ["$$rAF", "$window", "$mdAria", "$mdUtil", "$mdConstant", "$mdTheming", "$mdGesture", "$parse"];
9631
9496
 
9632
- /*!
9633
- * Angular Material Design
9634
- * https://github.com/angular/material
9635
- * @license MIT
9636
- * v0.9.0-rc2
9637
- */
9638
9497
  /*
9639
9498
  * @ngdoc module
9640
9499
  * @name material.components.sticky
@@ -9937,12 +9796,6 @@ function MdSticky($document, $mdConstant, $compile, $$rAF, $mdUtil) {
9937
9796
  }
9938
9797
  MdSticky.$inject = ["$document", "$mdConstant", "$compile", "$$rAF", "$mdUtil"];
9939
9798
 
9940
- /*!
9941
- * Angular Material Design
9942
- * https://github.com/angular/material
9943
- * @license MIT
9944
- * v0.9.0-rc2
9945
- */
9946
9799
  /**
9947
9800
  * @ngdoc module
9948
9801
  * @name material.components.subheader
@@ -10026,12 +9879,6 @@ function MdSubheaderDirective($mdSticky, $compile, $mdTheming) {
10026
9879
  }
10027
9880
  MdSubheaderDirective.$inject = ["$mdSticky", "$compile", "$mdTheming"];
10028
9881
 
10029
- /*!
10030
- * Angular Material Design
10031
- * https://github.com/angular/material
10032
- * @license MIT
10033
- * v0.9.0-rc2
10034
- */
10035
9882
  /**
10036
9883
  * @ngdoc module
10037
9884
  * @name material.components.swipe
@@ -10095,12 +9942,6 @@ function getDirective(name) {
10095
9942
 
10096
9943
 
10097
9944
 
10098
- /*!
10099
- * Angular Material Design
10100
- * https://github.com/angular/material
10101
- * @license MIT
10102
- * v0.9.0-rc2
10103
- */
10104
9945
  /**
10105
9946
  * @private
10106
9947
  * @ngdoc module
@@ -10155,6 +9996,7 @@ function MdSwitch(mdCheckboxDirective, $mdTheming, $mdUtil, $document, $mdConsta
10155
9996
 
10156
9997
  return {
10157
9998
  restrict: 'E',
9999
+ priority:210, // Run before ngAria
10158
10000
  transclude: true,
10159
10001
  template:
10160
10002
  '<div class="md-container">' +
@@ -10259,12 +10101,6 @@ function MdSwitch(mdCheckboxDirective, $mdTheming, $mdUtil, $document, $mdConsta
10259
10101
  }
10260
10102
  MdSwitch.$inject = ["mdCheckboxDirective", "$mdTheming", "$mdUtil", "$document", "$mdConstant", "$parse", "$$rAF", "$mdGesture"];
10261
10103
 
10262
- /*!
10263
- * Angular Material Design
10264
- * https://github.com/angular/material
10265
- * @license MIT
10266
- * v0.9.0-rc2
10267
- */
10268
10104
  /**
10269
10105
  * @ngdoc module
10270
10106
  * @name material.components.tabs
@@ -10293,12 +10129,6 @@ angular.module('material.components.tabs', [
10293
10129
  'material.components.icon'
10294
10130
  ]);
10295
10131
 
10296
- /*!
10297
- * Angular Material Design
10298
- * https://github.com/angular/material
10299
- * @license MIT
10300
- * v0.9.0-rc2
10301
- */
10302
10132
  /**
10303
10133
  * @ngdoc module
10304
10134
  * @name material.components.toast
@@ -10554,12 +10384,6 @@ function MdToastProvider($$interimElementProvider) {
10554
10384
  }
10555
10385
  MdToastProvider.$inject = ["$$interimElementProvider"];
10556
10386
 
10557
- /*!
10558
- * Angular Material Design
10559
- * https://github.com/angular/material
10560
- * @license MIT
10561
- * v0.9.0-rc2
10562
- */
10563
10387
  /**
10564
10388
  * @ngdoc module
10565
10389
  * @name material.components.toolbar
@@ -10709,12 +10533,6 @@ function mdToolbarDirective($$rAF, $mdConstant, $mdUtil, $mdTheming) {
10709
10533
  }
10710
10534
  mdToolbarDirective.$inject = ["$$rAF", "$mdConstant", "$mdUtil", "$mdTheming"];
10711
10535
 
10712
- /*!
10713
- * Angular Material Design
10714
- * https://github.com/angular/material
10715
- * @license MIT
10716
- * v0.9.0-rc2
10717
- */
10718
10536
  /**
10719
10537
  * @ngdoc module
10720
10538
  * @name material.components.tooltip
@@ -10758,6 +10576,7 @@ function MdTooltipDirective($timeout, $window, $$rAF, $document, $mdUtil, $mdThe
10758
10576
  return {
10759
10577
  restrict: 'E',
10760
10578
  transclude: true,
10579
+ priority:210, // Before ngAria
10761
10580
  template: '\
10762
10581
  <div class="md-background"></div>\
10763
10582
  <div class="md-content" ng-transclude></div>',
@@ -10946,24 +10765,12 @@ function MdTooltipDirective($timeout, $window, $$rAF, $document, $mdUtil, $mdThe
10946
10765
  }
10947
10766
  MdTooltipDirective.$inject = ["$timeout", "$window", "$$rAF", "$document", "$mdUtil", "$mdTheming", "$rootElement", "$animate", "$q"];
10948
10767
 
10949
- /*!
10950
- * Angular Material Design
10951
- * https://github.com/angular/material
10952
- * @license MIT
10953
- * v0.9.0-rc2
10954
- */
10955
10768
  /**
10956
10769
  * @ngdoc module
10957
10770
  * @name material.components.whiteframe
10958
10771
  */
10959
10772
  angular.module('material.components.whiteframe', []);
10960
10773
 
10961
- /*!
10962
- * Angular Material Design
10963
- * https://github.com/angular/material
10964
- * @license MIT
10965
- * v0.9.0-rc2
10966
- */
10967
10774
  angular
10968
10775
  .module('material.components.autocomplete')
10969
10776
  .controller('MdAutocompleteCtrl', MdAutocompleteCtrl);
@@ -10972,7 +10779,7 @@ var ITEM_HEIGHT = 41,
10972
10779
  MAX_HEIGHT = 5.5 * ITEM_HEIGHT,
10973
10780
  MENU_PADDING = 8;
10974
10781
 
10975
- function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $timeout, $mdTheming, $window, $rootElement) {
10782
+ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $timeout, $mdTheming, $window, $animate, $rootElement) {
10976
10783
 
10977
10784
  //-- private variables
10978
10785
 
@@ -11070,6 +10877,7 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $timeout, $
11070
10877
  $mdTheming(elements.$.ul);
11071
10878
  elements.$.ul.detach();
11072
10879
  elements.$.root.append(elements.$.ul);
10880
+ if ($animate.pin) $animate.pin(elements.$.ul, $rootElement);
11073
10881
  }
11074
10882
 
11075
10883
  function focusElement () {
@@ -11204,8 +11012,9 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $timeout, $
11204
11012
  updateScroll();
11205
11013
  updateSelectionMessage();
11206
11014
  break;
11015
+ case $mdConstant.KEY_CODE.TAB:
11207
11016
  case $mdConstant.KEY_CODE.ENTER:
11208
- if (self.hidden || self.loading || self.index < 0) return;
11017
+ if (self.hidden || self.loading || self.index < 0 || self.matches.length < 1) return;
11209
11018
  event.preventDefault();
11210
11019
  select(self.index);
11211
11020
  break;
@@ -11214,8 +11023,6 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $timeout, $
11214
11023
  self.hidden = true;
11215
11024
  self.index = getDefaultIndex();
11216
11025
  break;
11217
- case $mdConstant.KEY_CODE.TAB:
11218
- break;
11219
11026
  default:
11220
11027
  }
11221
11028
  }
@@ -11266,6 +11073,12 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $timeout, $
11266
11073
  function clearValue () {
11267
11074
  $scope.searchText = '';
11268
11075
  select(-1);
11076
+
11077
+ // Per http://www.w3schools.com/jsref/event_oninput.asp
11078
+ var eventObj = document.createEvent('CustomEvent');
11079
+ eventObj.initCustomEvent('input', true, true, {value: $scope.searchText});
11080
+ elements.input.dispatchEvent(eventObj);
11081
+
11269
11082
  elements.input.focus();
11270
11083
  }
11271
11084
 
@@ -11337,14 +11150,8 @@ function MdAutocompleteCtrl ($scope, $element, $mdUtil, $mdConstant, $timeout, $
11337
11150
  }
11338
11151
 
11339
11152
  }
11340
- MdAutocompleteCtrl.$inject = ["$scope", "$element", "$mdUtil", "$mdConstant", "$timeout", "$mdTheming", "$window", "$rootElement"];
11153
+ MdAutocompleteCtrl.$inject = ["$scope", "$element", "$mdUtil", "$mdConstant", "$timeout", "$mdTheming", "$window", "$animate", "$rootElement"];
11341
11154
 
11342
- /*!
11343
- * Angular Material Design
11344
- * https://github.com/angular/material
11345
- * @license MIT
11346
- * v0.9.0-rc2
11347
- */
11348
11155
  angular
11349
11156
  .module('material.components.autocomplete')
11350
11157
  .directive('mdAutocomplete', MdAutocomplete);
@@ -11385,7 +11192,7 @@ angular
11385
11192
  * </hljs>
11386
11193
  */
11387
11194
 
11388
- function MdAutocomplete ($mdTheming) {
11195
+ function MdAutocomplete ($mdTheming, $mdUtil) {
11389
11196
  return {
11390
11197
  controller: 'MdAutocompleteCtrl',
11391
11198
  controllerAs: '$mdAutocompleteCtrl',
@@ -11400,7 +11207,6 @@ function MdAutocomplete ($mdTheming) {
11400
11207
  noCache: '=?mdNoCache',
11401
11208
  itemChange: '&?mdSelectedItemChange',
11402
11209
  textChange: '&?mdSearchTextChange',
11403
- isDisabled: '=?ngDisabled',
11404
11210
  minLength: '=?mdMinLength',
11405
11211
  delay: '=?mdDelay',
11406
11212
  autofocus: '=?mdAutofocus',
@@ -11487,24 +11293,19 @@ function MdAutocomplete ($mdTheming) {
11487
11293
  };
11488
11294
 
11489
11295
  function link (scope, element, attr) {
11296
+ if (attr.ngDisabled) {
11297
+ scope.$parent.$watch(attr.ngDisabled, function (val) { scope.isDisabled = val; });
11298
+ }
11490
11299
  scope.contents = attr.$mdAutocompleteTemplate;
11491
11300
  delete attr.$mdAutocompleteTemplate;
11492
- angular.forEach(scope.$$isolateBindings, function (binding, key) {
11493
- if (binding.optional && angular.isUndefined(scope[key])) {
11494
- scope[key] = attr.hasOwnProperty(attr.$normalize(binding.attrName));
11495
- }
11496
- });
11301
+
11302
+ $mdUtil.initOptionalProperties(scope, attr, {searchText:null, selectedItem:null} );
11303
+
11497
11304
  $mdTheming(element);
11498
11305
  }
11499
11306
  }
11500
- MdAutocomplete.$inject = ["$mdTheming"];
11307
+ MdAutocomplete.$inject = ["$mdTheming", "$mdUtil"];
11501
11308
 
11502
- /*!
11503
- * Angular Material Design
11504
- * https://github.com/angular/material
11505
- * @license MIT
11506
- * v0.9.0-rc2
11507
- */
11508
11309
  angular
11509
11310
  .module('material.components.autocomplete')
11510
11311
  .controller('MdHighlightCtrl', MdHighlightCtrl);
@@ -11522,7 +11323,7 @@ function MdHighlightCtrl ($scope, $element, $interpolate) {
11522
11323
 
11523
11324
  function sanitize (term) {
11524
11325
  if (!term) return term;
11525
- return term.replace(/[\*\[\]\(\)\{\}\\\^\$]/g, '\\$&');
11326
+ return term.replace(/[\\\^\$\*\+\?\.\(\)\|\{\}\[\]]/g, '\\$&');
11526
11327
  }
11527
11328
 
11528
11329
  function getRegExp (text, flags) {
@@ -11535,12 +11336,6 @@ function MdHighlightCtrl ($scope, $element, $interpolate) {
11535
11336
  }
11536
11337
  MdHighlightCtrl.$inject = ["$scope", "$element", "$interpolate"];
11537
11338
 
11538
- /*!
11539
- * Angular Material Design
11540
- * https://github.com/angular/material
11541
- * @license MIT
11542
- * v0.9.0-rc2
11543
- */
11544
11339
  angular
11545
11340
  .module('material.components.autocomplete')
11546
11341
  .directive('mdHighlightText', MdHighlight);
@@ -11582,12 +11377,6 @@ function MdHighlight () {
11582
11377
  };
11583
11378
  }
11584
11379
 
11585
- /*!
11586
- * Angular Material Design
11587
- * https://github.com/angular/material
11588
- * @license MIT
11589
- * v0.9.0-rc2
11590
- */
11591
11380
  angular
11592
11381
  .module('material.components.autocomplete')
11593
11382
  .directive('mdAutocompleteListItem', MdAutocompleteListItem);
@@ -11613,12 +11402,6 @@ function MdAutocompleteListItem ($compile, $mdUtil) {
11613
11402
  }
11614
11403
  MdAutocompleteListItem.$inject = ["$compile", "$mdUtil"];
11615
11404
 
11616
- /*!
11617
- * Angular Material Design
11618
- * https://github.com/angular/material
11619
- * @license MIT
11620
- * v0.9.0-rc2
11621
- */
11622
11405
  angular
11623
11406
  .module('material.components.chips')
11624
11407
  .directive('mdChip', MdChip);
@@ -11664,23 +11447,18 @@ function MdChip($mdTheming) {
11664
11447
  function compile(element, attr) {
11665
11448
  element.append(DELETE_HINT_TEMPLATE);
11666
11449
  return function postLink(scope, element, attr, ctrl) {
11450
+ element.addClass('md-chip');
11451
+ $mdTheming(element);
11452
+
11667
11453
  if (ctrl) angular.element(element[0].querySelector('.md-chip-content'))
11668
11454
  .on('blur', function () {
11669
- ctrl.$scope.$apply(function () { ctrl.selectedChip = -1; });
11455
+ ctrl.selectedChip = -1;
11670
11456
  });
11671
- element.addClass('md-chip');
11672
- $mdTheming(element);
11673
11457
  };
11674
11458
  }
11675
11459
  }
11676
11460
  MdChip.$inject = ["$mdTheming"];
11677
11461
 
11678
- /*!
11679
- * Angular Material Design
11680
- * https://github.com/angular/material
11681
- * @license MIT
11682
- * v0.9.0-rc2
11683
- */
11684
11462
  angular
11685
11463
  .module('material.components.chips')
11686
11464
  .directive('mdChipRemove', MdChipRemove);
@@ -11733,12 +11511,6 @@ function MdChipRemove ($timeout) {
11733
11511
  }
11734
11512
  MdChipRemove.$inject = ["$timeout"];
11735
11513
 
11736
- /*!
11737
- * Angular Material Design
11738
- * https://github.com/angular/material
11739
- * @license MIT
11740
- * v0.9.0-rc2
11741
- */
11742
11514
  angular
11743
11515
  .module('material.components.chips')
11744
11516
  .directive('mdChipTransclude', MdChipTransclude);
@@ -11762,12 +11534,6 @@ function MdChipTransclude ($compile, $mdUtil) {
11762
11534
  }
11763
11535
  MdChipTransclude.$inject = ["$compile", "$mdUtil"];
11764
11536
 
11765
- /*!
11766
- * Angular Material Design
11767
- * https://github.com/angular/material
11768
- * @license MIT
11769
- * v0.9.0-rc2
11770
- */
11771
11537
  angular
11772
11538
  .module('material.components.chips')
11773
11539
  .controller('MdChipsCtrl', MdChipsCtrl);
@@ -12107,32 +11873,28 @@ MdChipsCtrl.prototype.configureUserInput = function(inputElement) {
12107
11873
  inputElement
12108
11874
  .attr({ tabindex: 0 })
12109
11875
  .on('keydown', function(event) { scope.$apply(function() { ctrl.inputKeydown(event); }); })
12110
- .on('focus', function () { this.$scope.$apply(this.onInputFocus.bind(this)); }.bind(this))
12111
- .on('blur', function () { this.$scope.$apply(this.onInputBlur.bind(this)); }.bind(this));
11876
+ .on('focus', ctrl.onInputFocus.bind(ctrl) )
11877
+ .on('blur', ctrl.onInputBlur.bind(ctrl) );
12112
11878
  };
12113
11879
 
12114
11880
  MdChipsCtrl.prototype.configureAutocomplete = function(ctrl) {
11881
+
12115
11882
  ctrl.registerSelectedItemWatcher(function (item) {
12116
11883
  if (item) {
12117
11884
  this.appendChip(item);
12118
11885
  this.resetChipBuffer();
12119
11886
  }
12120
11887
  }.bind(this));
11888
+
12121
11889
  this.$element.find('input')
12122
- .on('focus', function () { this.$scope.$apply(this.onInputFocus.bind(this)); }.bind(this))
12123
- .on('blur', function () { this.$scope.$apply(this.onInputBlur.bind(this)); }.bind(this));
11890
+ .on('focus',this.onInputFocus.bind(this) )
11891
+ .on('blur', this.onInputBlur.bind(this) );
12124
11892
  };
12125
11893
 
12126
11894
  MdChipsCtrl.prototype.hasFocus = function () {
12127
11895
  return this.inputHasFocus || this.selectedChip >= 0;
12128
11896
  };
12129
11897
 
12130
- /*!
12131
- * Angular Material Design
12132
- * https://github.com/angular/material
12133
- * @license MIT
12134
- * v0.9.0-rc2
12135
- */
12136
11898
  angular
12137
11899
  .module('material.components.chips')
12138
11900
  .directive('mdChips', MdChips);
@@ -12275,7 +12037,7 @@ var CHIP_REMOVE_TEMPLATE = '\
12275
12037
  /**
12276
12038
  * MDChips Directive Definition
12277
12039
  */
12278
- function MdChips ($mdTheming, $compile, $timeout) {
12040
+ function MdChips ($mdTheming, $mdUtil, $compile, $timeout) {
12279
12041
  return {
12280
12042
  template: function(element, attrs) {
12281
12043
  // Clone the element into an attribute. By prepending the attribute
@@ -12355,12 +12117,7 @@ function MdChips ($mdTheming, $compile, $timeout) {
12355
12117
  */
12356
12118
  return function postLink(scope, element, attrs, controllers) {
12357
12119
 
12358
- //-- give optional properties with no value a boolean true by default
12359
- angular.forEach(scope.$$isolateBindings, function (binding, key) {
12360
- if (binding.optional && angular.isUndefined(scope[key])) {
12361
- scope[key] = attr.hasOwnProperty(attr.$normalize(binding.attrName));
12362
- }
12363
- });
12120
+ $mdUtil.initOptionalProperties(scope, attr);
12364
12121
 
12365
12122
  $mdTheming(element);
12366
12123
  var mdChipsCtrl = controllers[0];
@@ -12401,14 +12158,8 @@ function MdChips ($mdTheming, $compile, $timeout) {
12401
12158
  };
12402
12159
  }
12403
12160
  }
12404
- MdChips.$inject = ["$mdTheming", "$compile", "$timeout"];
12161
+ MdChips.$inject = ["$mdTheming", "$mdUtil", "$compile", "$timeout"];
12405
12162
 
12406
- /*!
12407
- * Angular Material Design
12408
- * https://github.com/angular/material
12409
- * @license MIT
12410
- * v0.9.0-rc2
12411
- */
12412
12163
  angular
12413
12164
  .module('material.components.chips')
12414
12165
  .controller('MdContactChipsCtrl', MdContactChipsCtrl);
@@ -12439,12 +12190,6 @@ MdContactChipsCtrl.prototype.filterSelectedContacts = function(contact) {
12439
12190
  return this.contacts.indexOf(contact) == -1;
12440
12191
  };
12441
12192
 
12442
- /*!
12443
- * Angular Material Design
12444
- * https://github.com/angular/material
12445
- * @license MIT
12446
- * v0.9.0-rc2
12447
- */
12448
12193
  angular
12449
12194
  .module('material.components.chips')
12450
12195
  .directive('mdContactChips', MdContactChips);
@@ -12538,7 +12283,7 @@ var MD_CONTACT_CHIPS_TEMPLATE = '\
12538
12283
  * @returns {*}
12539
12284
  * @ngInject
12540
12285
  */
12541
- function MdContactChips ($mdTheming) {
12286
+ function MdContactChips ($mdTheming, $mdUtil) {
12542
12287
  return {
12543
12288
  template: function(element, attrs) {
12544
12289
  return MD_CONTACT_CHIPS_TEMPLATE;
@@ -12564,26 +12309,15 @@ function MdContactChips ($mdTheming) {
12564
12309
  function compile(element, attr) {
12565
12310
  return function postLink(scope, element, attrs, controllers) {
12566
12311
 
12567
- //-- give optional properties with no value a boolean true by default
12568
- angular.forEach(scope.$$isolateBindings, function (binding, key) {
12569
- if (binding.optional && angular.isUndefined(scope[key])) {
12570
- scope[key] = attr.hasOwnProperty(attr.$normalize(binding.attrName));
12571
- }
12572
- });
12573
-
12312
+ $mdUtil.initOptionalProperties(scope, attr);
12574
12313
  $mdTheming(element);
12314
+
12575
12315
  element.attr('tabindex', '-1');
12576
12316
  };
12577
12317
  }
12578
12318
  }
12579
- MdContactChips.$inject = ["$mdTheming"];
12319
+ MdContactChips.$inject = ["$mdTheming", "$mdUtil"];
12580
12320
 
12581
- /*!
12582
- * Angular Material Design
12583
- * https://github.com/angular/material
12584
- * @license MIT
12585
- * v0.9.0-rc2
12586
- */
12587
12321
  /**
12588
12322
  * @ngdoc directive
12589
12323
  * @name mdTab
@@ -12649,8 +12383,8 @@ function MdTab () {
12649
12383
  label: '@',
12650
12384
  active: '=?mdActive',
12651
12385
  disabled: '=?ngDisabled',
12652
- select: '&?mdOnSelect',
12653
- deselect: '&?mdOnDeselect'
12386
+ selectExpr: '@?mdOnSelect',
12387
+ deselectExpr: '@?mdOnDeselect'
12654
12388
  },
12655
12389
  link: postLink
12656
12390
  };
@@ -12667,8 +12401,8 @@ function MdTab () {
12667
12401
  label: getLabel()
12668
12402
  }, index);
12669
12403
 
12670
- scope.deselect = scope.deselect || angular.noop;
12671
- scope.select = scope.select || angular.noop;
12404
+ scope.deselect = function () { ctrl.parent.$eval(scope.deselectExpr || ''); };
12405
+ scope.select = function () { ctrl.parent.$eval(scope.selectExpr || ''); };
12672
12406
 
12673
12407
  scope.$watch('active', function (active) { if (active) ctrl.select(data.getIndex()); });
12674
12408
  scope.$watch('disabled', function () { ctrl.refreshIndex(); });
@@ -12699,12 +12433,6 @@ function MdTab () {
12699
12433
  }
12700
12434
  }
12701
12435
 
12702
- /*!
12703
- * Angular Material Design
12704
- * https://github.com/angular/material
12705
- * @license MIT
12706
- * v0.9.0-rc2
12707
- */
12708
12436
  angular
12709
12437
  .module('material.components.tabs')
12710
12438
  .directive('mdTabItem', MdTabItem);
@@ -12717,12 +12445,6 @@ function MdTabItem () {
12717
12445
  }
12718
12446
  }
12719
12447
 
12720
- /*!
12721
- * Angular Material Design
12722
- * https://github.com/angular/material
12723
- * @license MIT
12724
- * v0.9.0-rc2
12725
- */
12726
12448
  angular.module('material.components.tabs')
12727
12449
  .directive('mdTabScroll', MdTabScroll);
12728
12450
 
@@ -12741,12 +12463,6 @@ function MdTabScroll ($parse) {
12741
12463
  }
12742
12464
  MdTabScroll.$inject = ["$parse"];
12743
12465
 
12744
- /*!
12745
- * Angular Material Design
12746
- * https://github.com/angular/material
12747
- * @license MIT
12748
- * v0.9.0-rc2
12749
- */
12750
12466
  angular
12751
12467
  .module('material.components.tabs')
12752
12468
  .controller('MdTabsController', MdTabsController);
@@ -13099,12 +12815,6 @@ function MdTabsController ($scope, $element, $window, $timeout, $mdConstant, $md
13099
12815
  }
13100
12816
  MdTabsController.$inject = ["$scope", "$element", "$window", "$timeout", "$mdConstant", "$mdInkRipple", "$mdUtil", "$animate"];
13101
12817
 
13102
- /*!
13103
- * Angular Material Design
13104
- * https://github.com/angular/material
13105
- * @license MIT
13106
- * v0.9.0-rc2
13107
- */
13108
12818
  /**
13109
12819
  * @ngdoc directive
13110
12820
  * @name mdTabs
@@ -13192,7 +12902,7 @@ angular
13192
12902
  .module('material.components.tabs')
13193
12903
  .directive('mdTabs', MdTabs);
13194
12904
 
13195
- function MdTabs ($mdTheming) {
12905
+ function MdTabs ($mdTheming, $mdUtil) {
13196
12906
  return {
13197
12907
  scope: {
13198
12908
  noPagination: '=?mdNoPagination',
@@ -13296,11 +13006,9 @@ function MdTabs ($mdTheming) {
13296
13006
  controller: 'MdTabsController',
13297
13007
  controllerAs: '$mdTabsCtrl',
13298
13008
  link: function (scope, element, attr) {
13299
- angular.forEach(scope.$$isolateBindings, function (binding, key) {
13300
- if (binding.optional && angular.isUndefined(scope[key])) {
13301
- scope[key] = attr.hasOwnProperty(attr.$normalize(binding.attrName));
13302
- }
13303
- });
13009
+
13010
+ $mdUtil.initOptionalProperties(scope, attr);
13011
+
13304
13012
  //-- watch attributes
13305
13013
  attr.$observe('mdNoBar', function (value) { scope.noInkBar = angular.isDefined(value); });
13306
13014
  //-- set default value for selectedIndex
@@ -13310,14 +13018,8 @@ function MdTabs ($mdTheming) {
13310
13018
  }
13311
13019
  };
13312
13020
  }
13313
- MdTabs.$inject = ["$mdTheming"];
13021
+ MdTabs.$inject = ["$mdTheming", "$mdUtil"];
13314
13022
 
13315
- /*!
13316
- * Angular Material Design
13317
- * https://github.com/angular/material
13318
- * @license MIT
13319
- * v0.9.0-rc2
13320
- */
13321
13023
  angular
13322
13024
  .module('material.components.tabs')
13323
13025
  .directive('mdTemplate', MdTemplate);
@@ -13341,5 +13043,5 @@ function MdTemplate ($compile) {
13341
13043
  MdTemplate.$inject = ["$compile"];
13342
13044
 
13343
13045
  (function(){
13344
- angular.module("material.core").constant("$MD_THEME_CSS", "/* mixin definition ; sets LTR and RTL within the same style call */md-autocomplete.md-THEME_NAME-theme { background: '{{background-50}}'; } md-autocomplete.md-THEME_NAME-theme button md-icon path { fill: '{{background-600}}'; } md-autocomplete.md-THEME_NAME-theme button:after { background: '{{background-600-0.3}}'; }.md-autocomplete-suggestions.md-THEME_NAME-theme { background: '{{background-50}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li { border-top: 1px solid '{{background-300}}'; color: '{{background-900}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li .highlight { color: '{{background-600}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li:hover, .md-autocomplete-suggestions.md-THEME_NAME-theme li.selected { background: '{{background-200}}'; }md-backdrop.md-opaque.md-THEME_NAME-theme { background-color: '{{foreground-4-0.5}}'; }md-bottom-sheet.md-THEME_NAME-theme { background-color: '{{background-50}}'; border-top-color: '{{background-300}}'; } md-bottom-sheet.md-THEME_NAME-theme.md-list md-item { color: '{{foreground-1}}'; } md-bottom-sheet.md-THEME_NAME-theme .md-subheader { background-color: '{{background-50}}'; } md-bottom-sheet.md-THEME_NAME-theme .md-subheader { color: '{{foreground-1}}'; }a.md-button.md-THEME_NAME-theme, .md-button.md-THEME_NAME-theme { border-radius: 3px; } a.md-button.md-THEME_NAME-theme:not([disabled]):hover, .md-button.md-THEME_NAME-theme:not([disabled]):hover { background-color: '{{background-500-0.2}}'; } a.md-button.md-THEME_NAME-theme:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme:not([disabled]).md-focused { background-color: '{{background-500-0.2}}'; } a.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover, .md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover { background-color: transparent; } a.md-button.md-THEME_NAME-theme.md-fab, .md-button.md-THEME_NAME-theme.md-fab { border-radius: 50%; background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab md-icon, .md-button.md-THEME_NAME-theme.md-fab md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused { background-color: '{{accent-A700}}'; } a.md-button.md-THEME_NAME-theme.md-primary, .md-button.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised, a.md-button.md-THEME_NAME-theme.md-primary.md-fab, .md-button.md-THEME_NAME-theme.md-primary.md-raised, .md-button.md-THEME_NAME-theme.md-primary.md-fab { color: '{{primary-contrast}}'; background-color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised md-icon, a.md-button.md-THEME_NAME-theme.md-primary.md-fab md-icon, .md-button.md-THEME_NAME-theme.md-primary.md-raised md-icon, .md-button.md-THEME_NAME-theme.md-primary.md-fab md-icon { color: '{{primary-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover { background-color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused { background-color: '{{primary-600}}'; } a.md-button.md-THEME_NAME-theme.md-fab, .md-button.md-THEME_NAME-theme.md-fab { border-radius: 50%; background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused { background-color: '{{accent-A700}}'; } a.md-button.md-THEME_NAME-theme.md-raised, .md-button.md-THEME_NAME-theme.md-raised { color: '{{background-contrast}}'; background-color: '{{background-50}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover { background-color: '{{background-50}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused { background-color: '{{background-200}}'; } a.md-button.md-THEME_NAME-theme.md-warn, .md-button.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised, a.md-button.md-THEME_NAME-theme.md-warn.md-fab, .md-button.md-THEME_NAME-theme.md-warn.md-raised, .md-button.md-THEME_NAME-theme.md-warn.md-fab { color: '{{warn-contrast}}'; background-color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised md-icon, a.md-button.md-THEME_NAME-theme.md-warn.md-fab md-icon, .md-button.md-THEME_NAME-theme.md-warn.md-raised md-icon, .md-button.md-THEME_NAME-theme.md-warn.md-fab md-icon { color: '{{warn-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover { background-color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused { background-color: '{{warn-700}}'; } a.md-button.md-THEME_NAME-theme.md-accent, .md-button.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised, a.md-button.md-THEME_NAME-theme.md-accent.md-fab, .md-button.md-THEME_NAME-theme.md-accent.md-raised, .md-button.md-THEME_NAME-theme.md-accent.md-fab { color: '{{accent-contrast}}'; background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised md-icon, a.md-button.md-THEME_NAME-theme.md-accent.md-fab md-icon, .md-button.md-THEME_NAME-theme.md-accent.md-raised md-icon, .md-button.md-THEME_NAME-theme.md-accent.md-fab md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused { background-color: '{{accent-700}}'; } a.md-button.md-THEME_NAME-theme[disabled], a.md-button.md-THEME_NAME-theme.md-raised[disabled], a.md-button.md-THEME_NAME-theme.md-fab[disabled], .md-button.md-THEME_NAME-theme[disabled], .md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled] { color: '{{foreground-2}}'; cursor: not-allowed; } a.md-button.md-THEME_NAME-theme[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon, .md-button.md-THEME_NAME-theme[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon { color: '{{foreground-2}}'; } a.md-button.md-THEME_NAME-theme.md-raised[disabled], a.md-button.md-THEME_NAME-theme.md-fab[disabled], .md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled] { background-color: '{{foreground-4}}'; } a.md-button.md-THEME_NAME-theme[disabled], .md-button.md-THEME_NAME-theme[disabled] { background-color: 'transparent'; }md-checkbox.md-THEME_NAME-theme .md-ripple { color: '{{accent-600}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple { color: '{{background-600}}'; }md-checkbox.md-THEME_NAME-theme.md-checked.md-focused .md-container:before { background-color: '{{accent-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-icon { background-color: '{{accent-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple { color: '{{primary-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple { color: '{{background-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon { background-color: '{{primary-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked.md-focused .md-container:before { background-color: '{{primary-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple { color: '{{warn-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon { background-color: '{{warn-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked.md-focused:not([disabled]) .md-container:before { background-color: '{{warn-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme[disabled] .md-icon { border-color: '{{foreground-3}}'; }md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon { background-color: '{{foreground-3}}'; }md-checkbox.md-THEME_NAME-theme[disabled] .md-label { color: '{{foreground-3}}'; }md-chips.md-THEME_NAME-theme .md-chips { box-shadow: 0 1px '{{background-300}}'; } md-chips.md-THEME_NAME-theme .md-chips.md-focused { box-shadow: 0 2px '{{primary-color}}'; }md-chips.md-THEME_NAME-theme .md-chip { background: '{{background-300}}'; color: '{{background-800}}'; } md-chips.md-THEME_NAME-theme .md-chip.md-focused { background: '{{primary-color}}'; color: '{{primary-contrast}}'; } md-chips.md-THEME_NAME-theme .md-chip.md-focused md-icon { color: '{{primary-contrast}}'; }md-chips.md-THEME_NAME-theme md-chip-remove .md-button md-icon path { fill: '{{background-500}}'; }.md-contact-suggestion span.md-contact-email { color: '{{background-400}}'; }md-content.md-THEME_NAME-theme { background-color: '{{background-color}}'; }md-dialog.md-THEME_NAME-theme { border-radius: 4px; background-color: '{{background-color}}'; } md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions { border-top-color: '{{foreground-4}}'; }md-card.md-THEME_NAME-theme { background-color: '{{background-color}}'; border-radius: 2px; } md-card.md-THEME_NAME-theme .md-card-image { border-radius: 2px 2px 0 0; }md-divider.md-THEME_NAME-theme { border-top-color: '{{foreground-4}}'; }md-icon.md-THEME_NAME-theme { color: '{{foreground-2}}'; } md-icon.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } md-icon.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } md-icon.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; }md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h3, md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h4, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h3, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h4 { color: '{{foreground-1}}'; }md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text p, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text p { color: '{{foreground-2}}'; }md-list.md-THEME_NAME-theme .md-proxy-focus.md-focused div.md-no-style { background-color: '{{background-100}}'; }md-list.md-THEME_NAME-theme md-list-item > md-icon { color: '{{foreground-2}}'; } md-list.md-THEME_NAME-theme md-list-item > md-icon.md-highlight { color: '{{primary-color}}'; } md-list.md-THEME_NAME-theme md-list-item > md-icon.md-highlight.md-accent { color: '{{accent-color}}'; }md-list.md-THEME_NAME-theme md-list-item button { background-color: '{{background-color}}'; } md-list.md-THEME_NAME-theme md-list-item button.md-button:not([disabled]):hover { background-color: '{{background-color}}'; }md-input-container.md-THEME_NAME-theme .md-input { color: '{{foreground-1}}'; border-color: '{{foreground-4}}'; text-shadow: '{{foreground-shadow}}'; } md-input-container.md-THEME_NAME-theme .md-input::-webkit-input-placeholder, md-input-container.md-THEME_NAME-theme .md-input::-moz-placeholder, md-input-container.md-THEME_NAME-theme .md-input:-moz-placeholder, md-input-container.md-THEME_NAME-theme .md-input:-ms-input-placeholder { color: '{{foreground-3}}'; }md-input-container.md-THEME_NAME-theme > md-icon { color: '{{foreground-1}}'; }md-input-container.md-THEME_NAME-theme label, md-input-container.md-THEME_NAME-theme .md-placeholder { text-shadow: '{{foreground-shadow}}'; color: '{{foreground-3}}'; }md-input-container.md-THEME_NAME-theme ng-messages, md-input-container.md-THEME_NAME-theme [ng-message], md-input-container.md-THEME_NAME-theme [data-ng-message], md-input-container.md-THEME_NAME-theme [x-ng-message] { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-has-value label { color: '{{foreground-2}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused .md-input { border-color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused label { color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused md-icon { color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent .md-input { border-color: '{{accent-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent label { color: '{{accent-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn .md-input { border-color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn label { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input { border-color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid.md-input-focused label { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid data-ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid x-ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid [ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid [data-ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid [x-ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid .md-char-counter { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme .md-input[disabled], [disabled] md-input-container.md-THEME_NAME-theme .md-input { border-bottom-color: transparent; color: '{{foreground-3}}'; background-image: linear-gradient(to right, '{{foreground-4}}' 0%, '{{foreground-4}}' 33%, transparent 0%); background-image: -ms-linear-gradient(left, transparent 0%, '{{foreground-4}}' 100%); }md-progress-circular.md-THEME_NAME-theme { background-color: transparent; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-gap { border-top-color: '{{primary-color}}'; border-bottom-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme .md-inner .md-right .md-half-circle { border-top-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-right .md-half-circle { border-right-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-left .md-half-circle { border-left-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-gap { border-top-color: '{{warn-color}}'; border-bottom-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-right .md-half-circle { border-top-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-right .md-half-circle { border-right-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-left .md-half-circle { border-left-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-gap { border-top-color: '{{accent-color}}'; border-bottom-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-right .md-half-circle { border-top-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-right .md-half-circle { border-right-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-left .md-half-circle { border-left-color: '{{accent-color}}'; }md-progress-linear.md-THEME_NAME-theme .md-container { background-color: '{{primary-100}}'; }md-progress-linear.md-THEME_NAME-theme .md-bar { background-color: '{{primary-color}}'; }md-progress-linear.md-THEME_NAME-theme.md-warn .md-container { background-color: '{{warn-100}}'; }md-progress-linear.md-THEME_NAME-theme.md-warn .md-bar { background-color: '{{warn-color}}'; }md-progress-linear.md-THEME_NAME-theme.md-accent .md-container { background-color: '{{accent-100}}'; }md-progress-linear.md-THEME_NAME-theme.md-accent .md-bar { background-color: '{{accent-color}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-bar1 { background-color: '{{warn-100}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-dashed:before { background: radial-gradient('{{warn-100}}' 0%, '{{warn-100}}' 16%, transparent 42%); }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-bar1 { background-color: '{{accent-100}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-dashed:before { background: radial-gradient('{{accent-100}}' 0%, '{{accent-100}}' 16%, transparent 42%); }md-radio-button.md-THEME_NAME-theme .md-off { border-color: '{{foreground-2}}'; }md-radio-button.md-THEME_NAME-theme .md-on { background-color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme.md-checked .md-off { border-color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme.md-checked .md-ink-ripple { color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme .md-container .md-ripple { color: '{{accent-600}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-on { background-color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off { border-color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple { color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple { color: '{{primary-600}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-on { background-color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off { border-color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple { color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple { color: '{{warn-600}}'; }md-radio-group.md-THEME_NAME-theme[disabled], md-radio-button.md-THEME_NAME-theme[disabled] { color: '{{foreground-3}}'; } md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-off, md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-off { border-color: '{{foreground-3}}'; } md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-on, md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-on { border-color: '{{foreground-3}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked .md-container:before { background-color: '{{accent-color-0.26}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked:not([disabled]).md-primary .md-container:before { background-color: '{{primary-color-0.26}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-primary .md-container:before { background-color: '{{warn-color-0.26}}'; }md-select.md-THEME_NAME-theme.ng-invalid.ng-dirty .md-select-label { color: '{{warn-500}}' !important; border-bottom-color: '{{warn-500}}' !important; }md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-label { border-bottom-color: '{{primary-color}}'; color: '{{ foreground-1 }}'; } md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-label.md-placeholder { color: '{{ foreground-1 }}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus.md-accent .md-select-label { border-bottom-color: '{{accent-color}}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus.md-warn .md-select-label { border-bottom-color: '{{warn-color}}'; }md-select.md-THEME_NAME-theme[disabled] .md-select-label { color: '{{foreground-3}}'; } md-select.md-THEME_NAME-theme[disabled] .md-select-label.md-placeholder { color: '{{foreground-3}}'; }md-select.md-THEME_NAME-theme .md-select-label { border-bottom-color: '{{foreground-4}}'; } md-select.md-THEME_NAME-theme .md-select-label.md-placeholder { color: '{{foreground-2}}'; }md-select-menu.md-THEME_NAME-theme md-optgroup { color: '{{foreground-2}}'; } md-select-menu.md-THEME_NAME-theme md-optgroup md-option { color: '{{foreground-1}}'; }md-select-menu.md-THEME_NAME-theme md-option[selected] { color: '{{primary-500}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected]:focus { color: '{{primary-600}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected].md-accent { color: '{{accent-500}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected].md-accent:focus { color: '{{accent-600}}'; }md-select-menu.md-THEME_NAME-theme md-option:focus:not([selected]) { background: '{{background-200}}'; }md-sidenav.md-THEME_NAME-theme { background-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme .md-track { background-color: '{{foreground-3}}'; }md-slider.md-THEME_NAME-theme .md-track-ticks { background-color: '{{foreground-4}}'; }md-slider.md-THEME_NAME-theme .md-focus-thumb { background-color: '{{foreground-2}}'; }md-slider.md-THEME_NAME-theme .md-focus-ring { border-color: '{{foreground-4}}'; }md-slider.md-THEME_NAME-theme .md-disabled-thumb { border-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme.md-min .md-thumb:after { background-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme .md-track.md-track-fill { background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-thumb:after { border-color: '{{accent-color}}'; background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-sign { background-color: '{{accent-color}}'; } md-slider.md-THEME_NAME-theme .md-sign:after { border-top-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-thumb-text { color: '{{accent-contrast}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-track.md-track-fill { background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after { border-color: '{{warn-color}}'; background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-sign { background-color: '{{warn-color}}'; } md-slider.md-THEME_NAME-theme.md-warn .md-sign:after { border-top-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text { color: '{{warn-contrast}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-track.md-track-fill { background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-thumb:after { border-color: '{{primary-color}}'; background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-sign { background-color: '{{primary-color}}'; } md-slider.md-THEME_NAME-theme.md-primary .md-sign:after { border-top-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-thumb-text { color: '{{primary-contrast}}'; }md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after { border-color: '{{foreground-3}}'; }md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after { background-color: '{{foreground-3}}'; }.md-subheader.md-THEME_NAME-theme { color: '{{ foreground-2-0.23 }}'; background-color: '{{background-color}}'; } .md-subheader.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } .md-subheader.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } .md-subheader.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; }md-switch.md-THEME_NAME-theme .md-thumb { background-color: '{{background-50}}'; }md-switch.md-THEME_NAME-theme .md-bar { background-color: '{{background-500}}'; }md-switch.md-THEME_NAME-theme.md-checked .md-thumb { background-color: '{{accent-color}}'; }md-switch.md-THEME_NAME-theme.md-checked .md-bar { background-color: '{{accent-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-focused .md-thumb:before { background-color: '{{accent-color-0.26}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-thumb { background-color: '{{primary-color}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-bar { background-color: '{{primary-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary.md-focused .md-thumb:before { background-color: '{{primary-color-0.26}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-thumb { background-color: '{{warn-color}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-bar { background-color: '{{warn-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn.md-focused .md-thumb:before { background-color: '{{warn-color-0.26}}'; }md-switch.md-THEME_NAME-theme[disabled] .md-thumb { background-color: '{{background-400}}'; }md-switch.md-THEME_NAME-theme[disabled] .md-bar { background-color: '{{foreground-4}}'; }md-tabs.md-THEME_NAME-theme md-tabs-wrapper { background-color: transparent; border-color: '{{foreground-4}}'; }md-tabs.md-THEME_NAME-theme .md-paginator md-icon { color: '{{primary-color}}'; }md-tabs.md-THEME_NAME-theme md-ink-bar { color: '{{accent-color}}'; background: '{{accent-color}}'; }md-tabs.md-THEME_NAME-theme .md-tab { color: '{{foreground-2}}'; } md-tabs.md-THEME_NAME-theme .md-tab[disabled] { color: '{{foreground-3}}'; } md-tabs.md-THEME_NAME-theme .md-tab.md-active, md-tabs.md-THEME_NAME-theme .md-tab.md-focused { color: '{{primary-color}}'; } md-tabs.md-THEME_NAME-theme .md-tab.md-focused { background: '{{primary-color-0.1}}'; } md-tabs.md-THEME_NAME-theme .md-tab .md-ripple-container { color: '{{accent-100}}'; }md-tabs.md-THEME_NAME-theme.md-accent md-tabs-wrapper { background-color: '{{accent-color}}'; }md-tabs.md-THEME_NAME-theme.md-accent md-tab-item:not([disabled]) { color: '{{accent-100}}'; } md-tabs.md-THEME_NAME-theme.md-accent md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-accent md-tab-item:not([disabled]).md-focused { color: '{{accent-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-accent md-tab-item:not([disabled]).md-focused { background: '{{accent-contrast-0.1}}'; }md-tabs.md-THEME_NAME-theme.md-accent md-ink-bar { color: '{{primary-600-1}}'; background: '{{primary-600-1}}'; }md-tabs.md-THEME_NAME-theme.md-primary md-tabs-wrapper { background-color: '{{primary-color}}'; }md-tabs.md-THEME_NAME-theme.md-primary md-tab-item:not([disabled]) { color: '{{primary-100}}'; } md-tabs.md-THEME_NAME-theme.md-primary md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-primary md-tab-item:not([disabled]).md-focused { color: '{{primary-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-primary md-tab-item:not([disabled]).md-focused { background: '{{primary-contrast-0.1}}'; }md-tabs.md-THEME_NAME-theme.md-warn md-tabs-wrapper { background-color: '{{warn-color}}'; }md-tabs.md-THEME_NAME-theme.md-warn md-tab-item:not([disabled]) { color: '{{warn-100}}'; } md-tabs.md-THEME_NAME-theme.md-warn md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-warn md-tab-item:not([disabled]).md-focused { color: '{{warn-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-warn md-tab-item:not([disabled]).md-focused { background: '{{warn-contrast-0.1}}'; }md-toolbar > md-tabs.md-THEME_NAME-theme md-tabs-wrapper { background-color: '{{primary-color}}'; }md-toolbar > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]) { color: '{{primary-100}}'; } md-toolbar > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-active, md-toolbar > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { color: '{{primary-contrast}}'; } md-toolbar > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { background: '{{primary-contrast-0.1}}'; }md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-tabs-wrapper { background-color: '{{accent-color}}'; }md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]) { color: '{{accent-100}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-active, md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { color: '{{accent-contrast}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { background: '{{accent-contrast-0.1}}'; }md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-ink-bar { color: '{{primary-600-1}}'; background: '{{primary-600-1}}'; }md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme md-tabs-wrapper { background-color: '{{warn-color}}'; }md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]) { color: '{{warn-100}}'; } md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-active, md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { color: '{{warn-contrast}}'; } md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { background: '{{warn-contrast-0.1}}'; }md-toast.md-THEME_NAME-theme { background-color: #323232; color: '{{background-50}}'; } md-toast.md-THEME_NAME-theme .md-button { color: '{{background-50}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight { color: '{{primary-A200}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight.md-accent { color: '{{accent-A200}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight.md-warn { color: '{{warn-A200}}'; }md-toolbar.md-THEME_NAME-theme { background-color: '{{primary-color}}'; color: '{{primary-contrast}}'; } md-toolbar.md-THEME_NAME-theme .md-button { color: '{{primary-contrast}}'; } md-toolbar.md-THEME_NAME-theme.md-accent { background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } md-toolbar.md-THEME_NAME-theme.md-warn { background-color: '{{warn-color}}'; color: '{{warn-contrast}}'; }md-tooltip.md-THEME_NAME-theme { color: '{{background-A100}}'; } md-tooltip.md-THEME_NAME-theme .md-background { background-color: '{{foreground-2}}'; }");
13046
+ angular.module("material.core").constant("$MD_THEME_CSS", "/* mixin definition ; sets LTR and RTL within the same style call */md-autocomplete.md-THEME_NAME-theme { background: '{{background-50}}'; } md-autocomplete.md-THEME_NAME-theme button md-icon path { fill: '{{background-600}}'; } md-autocomplete.md-THEME_NAME-theme button:after { background: '{{background-600-0.3}}'; }.md-autocomplete-suggestions.md-THEME_NAME-theme { background: '{{background-50}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li { color: '{{background-900}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li .highlight { color: '{{background-600}}'; } .md-autocomplete-suggestions.md-THEME_NAME-theme li:hover, .md-autocomplete-suggestions.md-THEME_NAME-theme li.selected { background: '{{background-200}}'; }md-backdrop.md-opaque.md-THEME_NAME-theme { background-color: '{{foreground-4-0.5}}'; }md-bottom-sheet.md-THEME_NAME-theme { background-color: '{{background-50}}'; border-top-color: '{{background-300}}'; } md-bottom-sheet.md-THEME_NAME-theme.md-list md-list-item { color: '{{foreground-1}}'; } md-bottom-sheet.md-THEME_NAME-theme .md-subheader { background-color: '{{background-50}}'; } md-bottom-sheet.md-THEME_NAME-theme .md-subheader { color: '{{foreground-1}}'; }a.md-button.md-THEME_NAME-theme, .md-button.md-THEME_NAME-theme { border-radius: 3px; } a.md-button.md-THEME_NAME-theme:not([disabled]):hover, .md-button.md-THEME_NAME-theme:not([disabled]):hover { background-color: '{{background-500-0.2}}'; } a.md-button.md-THEME_NAME-theme:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme:not([disabled]).md-focused { background-color: '{{background-500-0.2}}'; } a.md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover, .md-button.md-THEME_NAME-theme:not([disabled]).md-icon-button:hover { background-color: transparent; } a.md-button.md-THEME_NAME-theme.md-fab, .md-button.md-THEME_NAME-theme.md-fab { border-radius: 50%; background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab md-icon, .md-button.md-THEME_NAME-theme.md-fab md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused { background-color: '{{accent-A700}}'; } a.md-button.md-THEME_NAME-theme.md-primary, .md-button.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised, a.md-button.md-THEME_NAME-theme.md-primary.md-fab, .md-button.md-THEME_NAME-theme.md-primary.md-raised, .md-button.md-THEME_NAME-theme.md-primary.md-fab { color: '{{primary-contrast}}'; background-color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]) md-icon { color: '{{primary-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]):hover { background-color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-primary.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-primary.md-fab:not([disabled]).md-focused { background-color: '{{primary-600}}'; } a.md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-primary:not([disabled]) md-icon { color: '{{primary-color}}'; } a.md-button.md-THEME_NAME-theme.md-fab, .md-button.md-THEME_NAME-theme.md-fab { border-radius: 50%; background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]) .md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-fab:not([disabled]).md-focused { background-color: '{{accent-A700}}'; } a.md-button.md-THEME_NAME-theme.md-raised, .md-button.md-THEME_NAME-theme.md-raised { color: '{{background-contrast}}'; background-color: '{{background-50}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]) .md-icon, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]) .md-icon { color: '{{background-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]):hover { background-color: '{{background-50}}'; } a.md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-raised:not([disabled]).md-focused { background-color: '{{background-200}}'; } a.md-button.md-THEME_NAME-theme.md-warn, .md-button.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised, a.md-button.md-THEME_NAME-theme.md-warn.md-fab, .md-button.md-THEME_NAME-theme.md-warn.md-raised, .md-button.md-THEME_NAME-theme.md-warn.md-fab { color: '{{warn-contrast}}'; background-color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]) md-icon { color: '{{warn-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]):hover { background-color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-warn.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-warn.md-fab:not([disabled]).md-focused { background-color: '{{warn-700}}'; } a.md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-warn:not([disabled]) md-icon { color: '{{warn-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent, .md-button.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised, a.md-button.md-THEME_NAME-theme.md-accent.md-fab, .md-button.md-THEME_NAME-theme.md-accent.md-raised, .md-button.md-THEME_NAME-theme.md-accent.md-fab { color: '{{accent-contrast}}'; background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]) md-icon { color: '{{accent-contrast}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]):hover, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]):hover { background-color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused, a.md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-accent.md-raised:not([disabled]).md-focused, .md-button.md-THEME_NAME-theme.md-accent.md-fab:not([disabled]).md-focused { background-color: '{{accent-700}}'; } a.md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon, .md-button.md-THEME_NAME-theme.md-accent:not([disabled]) md-icon { color: '{{accent-color}}'; } a.md-button.md-THEME_NAME-theme[disabled], a.md-button.md-THEME_NAME-theme.md-raised[disabled], a.md-button.md-THEME_NAME-theme.md-fab[disabled], a.md-button.md-THEME_NAME-theme.md-accent[disabled], a.md-button.md-THEME_NAME-theme.md-warn[disabled], .md-button.md-THEME_NAME-theme[disabled], .md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled], .md-button.md-THEME_NAME-theme.md-accent[disabled], .md-button.md-THEME_NAME-theme.md-warn[disabled] { color: '{{foreground-3}}'; cursor: not-allowed; } a.md-button.md-THEME_NAME-theme[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon, a.md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon, .md-button.md-THEME_NAME-theme[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-raised[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-fab[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-accent[disabled] md-icon, .md-button.md-THEME_NAME-theme.md-warn[disabled] md-icon { color: '{{foreground-3}}'; } a.md-button.md-THEME_NAME-theme.md-raised[disabled], a.md-button.md-THEME_NAME-theme.md-fab[disabled], .md-button.md-THEME_NAME-theme.md-raised[disabled], .md-button.md-THEME_NAME-theme.md-fab[disabled] { background-color: '{{foreground-4}}'; } a.md-button.md-THEME_NAME-theme[disabled], .md-button.md-THEME_NAME-theme[disabled] { background-color: transparent; }md-card.md-THEME_NAME-theme { background-color: '{{background-color}}'; border-radius: 2px; } md-card.md-THEME_NAME-theme .md-card-image { border-radius: 2px 2px 0 0; }md-checkbox.md-THEME_NAME-theme .md-ripple { color: '{{accent-600}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-ripple { color: '{{background-600}}'; }md-checkbox.md-THEME_NAME-theme.md-checked.md-focused .md-container:before { background-color: '{{accent-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-icon { background-color: '{{accent-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-ripple { color: '{{primary-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ripple { color: '{{background-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon { background-color: '{{primary-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked.md-focused .md-container:before { background-color: '{{primary-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-ripple { color: '{{warn-600}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn .md-icon { border-color: '{{foreground-2}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon { background-color: '{{warn-color-0.87}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked.md-focused:not([disabled]) .md-container:before { background-color: '{{warn-color-0.26}}'; }md-checkbox.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-icon:after { border-color: '{{background-200}}'; }md-checkbox.md-THEME_NAME-theme[disabled] .md-icon { border-color: '{{foreground-3}}'; }md-checkbox.md-THEME_NAME-theme[disabled].md-checked .md-icon { background-color: '{{foreground-3}}'; }md-checkbox.md-THEME_NAME-theme[disabled] .md-label { color: '{{foreground-3}}'; }md-chips.md-THEME_NAME-theme .md-chips { box-shadow: 0 1px '{{background-300}}'; } md-chips.md-THEME_NAME-theme .md-chips.md-focused { box-shadow: 0 2px '{{primary-color}}'; }md-chips.md-THEME_NAME-theme .md-chip { background: '{{background-300}}'; color: '{{background-800}}'; } md-chips.md-THEME_NAME-theme .md-chip.md-focused { background: '{{primary-color}}'; color: '{{primary-contrast}}'; } md-chips.md-THEME_NAME-theme .md-chip.md-focused md-icon { color: '{{primary-contrast}}'; }md-chips.md-THEME_NAME-theme md-chip-remove .md-button md-icon path { fill: '{{background-500}}'; }.md-contact-suggestion span.md-contact-email { color: '{{background-400}}'; }md-content.md-THEME_NAME-theme { background-color: '{{background-color}}'; }md-dialog.md-THEME_NAME-theme { border-radius: 4px; background-color: '{{background-color}}'; } md-dialog.md-THEME_NAME-theme.md-content-overflow .md-actions { border-top-color: '{{foreground-4}}'; }md-divider.md-THEME_NAME-theme { border-top-color: '{{foreground-4}}'; }md-icon.md-THEME_NAME-theme { color: '{{foreground-2}}'; } md-icon.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } md-icon.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } md-icon.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; }md-input-container.md-THEME_NAME-theme .md-input { color: '{{foreground-1}}'; border-color: '{{foreground-4}}'; text-shadow: '{{foreground-shadow}}'; } md-input-container.md-THEME_NAME-theme .md-input::-webkit-input-placeholder, md-input-container.md-THEME_NAME-theme .md-input::-moz-placeholder, md-input-container.md-THEME_NAME-theme .md-input:-moz-placeholder, md-input-container.md-THEME_NAME-theme .md-input:-ms-input-placeholder { color: '{{foreground-3}}'; }md-input-container.md-THEME_NAME-theme > md-icon { color: '{{foreground-1}}'; }md-input-container.md-THEME_NAME-theme label, md-input-container.md-THEME_NAME-theme .md-placeholder { text-shadow: '{{foreground-shadow}}'; color: '{{foreground-3}}'; }md-input-container.md-THEME_NAME-theme ng-messages, md-input-container.md-THEME_NAME-theme [ng-message], md-input-container.md-THEME_NAME-theme [data-ng-message], md-input-container.md-THEME_NAME-theme [x-ng-message] { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-has-value label { color: '{{foreground-2}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused .md-input { border-color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused label { color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused md-icon { color: '{{primary-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent .md-input { border-color: '{{accent-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-accent label { color: '{{accent-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn .md-input { border-color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme:not(.md-input-invalid).md-input-focused.md-warn label { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid .md-input { border-color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid.md-input-focused label { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme.md-input-invalid ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid data-ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid x-ng-message, md-input-container.md-THEME_NAME-theme.md-input-invalid [ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid [data-ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid [x-ng-message], md-input-container.md-THEME_NAME-theme.md-input-invalid .md-char-counter { color: '{{warn-500}}'; }md-input-container.md-THEME_NAME-theme .md-input[disabled], [disabled] md-input-container.md-THEME_NAME-theme .md-input { border-bottom-color: transparent; color: '{{foreground-3}}'; background-image: linear-gradient(to right, '{{foreground-4}}' 0%, '{{foreground-4}}' 33%, transparent 0%); background-image: -ms-linear-gradient(left, transparent 0%, '{{foreground-4}}' 100%); }md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h3, md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text h4, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h3, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text h4 { color: '{{foreground-1}}'; }md-list.md-THEME_NAME-theme md-list-item.md-2-line .md-list-item-text p, md-list.md-THEME_NAME-theme md-list-item.md-3-line .md-list-item-text p { color: '{{foreground-2}}'; }md-list.md-THEME_NAME-theme .md-proxy-focus.md-focused div.md-no-style { background-color: '{{background-100}}'; }md-list.md-THEME_NAME-theme md-list-item > md-icon { color: '{{foreground-2}}'; } md-list.md-THEME_NAME-theme md-list-item > md-icon.md-highlight { color: '{{primary-color}}'; } md-list.md-THEME_NAME-theme md-list-item > md-icon.md-highlight.md-accent { color: '{{accent-color}}'; }md-list.md-THEME_NAME-theme md-list-item button { background-color: '{{background-color}}'; } md-list.md-THEME_NAME-theme md-list-item button.md-button:not([disabled]):hover { background-color: '{{background-color}}'; }md-progress-circular.md-THEME_NAME-theme { background-color: transparent; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-gap { border-top-color: '{{primary-color}}'; border-bottom-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme .md-inner .md-right .md-half-circle { border-top-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-right .md-half-circle { border-right-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme .md-inner .md-left .md-half-circle { border-left-color: '{{primary-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-gap { border-top-color: '{{warn-color}}'; border-bottom-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-right .md-half-circle { border-top-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-right .md-half-circle { border-right-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-warn .md-inner .md-left .md-half-circle { border-left-color: '{{warn-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-gap { border-top-color: '{{accent-color}}'; border-bottom-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-left .md-half-circle, md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-right .md-half-circle { border-top-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-right .md-half-circle { border-right-color: '{{accent-color}}'; } md-progress-circular.md-THEME_NAME-theme.md-accent .md-inner .md-left .md-half-circle { border-left-color: '{{accent-color}}'; }md-progress-linear.md-THEME_NAME-theme .md-container { background-color: '{{primary-100}}'; }md-progress-linear.md-THEME_NAME-theme .md-bar { background-color: '{{primary-color}}'; }md-progress-linear.md-THEME_NAME-theme.md-warn .md-container { background-color: '{{warn-100}}'; }md-progress-linear.md-THEME_NAME-theme.md-warn .md-bar { background-color: '{{warn-color}}'; }md-progress-linear.md-THEME_NAME-theme.md-accent .md-container { background-color: '{{accent-100}}'; }md-progress-linear.md-THEME_NAME-theme.md-accent .md-bar { background-color: '{{accent-color}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-bar1 { background-color: '{{warn-100}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-warn .md-dashed:before { background: radial-gradient('{{warn-100}}' 0%, '{{warn-100}}' 16%, transparent 42%); }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-bar1 { background-color: '{{accent-100}}'; }md-progress-linear.md-THEME_NAME-theme[md-mode=buffer].md-accent .md-dashed:before { background: radial-gradient('{{accent-100}}' 0%, '{{accent-100}}' 16%, transparent 42%); }md-radio-button.md-THEME_NAME-theme .md-off { border-color: '{{foreground-2}}'; }md-radio-button.md-THEME_NAME-theme .md-on { background-color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme.md-checked .md-off { border-color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme.md-checked .md-ink-ripple { color: '{{accent-color-0.87}}'; }md-radio-button.md-THEME_NAME-theme .md-container .md-ripple { color: '{{accent-600}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-on { background-color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-off { border-color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary.md-checked .md-ink-ripple { color: '{{primary-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-primary .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-primary .md-container .md-ripple { color: '{{primary-600}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-on, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-on { background-color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-off, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-off { border-color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn.md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-checked .md-ink-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn.md-checked .md-ink-ripple { color: '{{warn-color-0.87}}'; }md-radio-group.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple, md-radio-group.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]) .md-warn .md-container .md-ripple, md-radio-button.md-THEME_NAME-theme:not([disabled]).md-warn .md-container .md-ripple { color: '{{warn-600}}'; }md-radio-group.md-THEME_NAME-theme[disabled], md-radio-button.md-THEME_NAME-theme[disabled] { color: '{{foreground-3}}'; } md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-off, md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-off { border-color: '{{foreground-3}}'; } md-radio-group.md-THEME_NAME-theme[disabled] .md-container .md-on, md-radio-button.md-THEME_NAME-theme[disabled] .md-container .md-on { border-color: '{{foreground-3}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked .md-container:before { background-color: '{{accent-color-0.26}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked:not([disabled]).md-primary .md-container:before { background-color: '{{primary-color-0.26}}'; }md-radio-group.md-THEME_NAME-theme.md-focused:not(:empty) .md-checked.md-primary .md-container:before { background-color: '{{warn-color-0.26}}'; }md-select.md-THEME_NAME-theme.ng-invalid.ng-dirty .md-select-label { color: '{{warn-500}}' !important; border-bottom-color: '{{warn-500}}' !important; }md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-label { border-bottom-color: '{{primary-color}}'; color: '{{ foreground-1 }}'; } md-select.md-THEME_NAME-theme:not([disabled]):focus .md-select-label.md-placeholder { color: '{{ foreground-1 }}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus.md-accent .md-select-label { border-bottom-color: '{{accent-color}}'; }md-select.md-THEME_NAME-theme:not([disabled]):focus.md-warn .md-select-label { border-bottom-color: '{{warn-color}}'; }md-select.md-THEME_NAME-theme[disabled] .md-select-label { color: '{{foreground-3}}'; } md-select.md-THEME_NAME-theme[disabled] .md-select-label.md-placeholder { color: '{{foreground-3}}'; }md-select.md-THEME_NAME-theme .md-select-label { border-bottom-color: '{{foreground-4}}'; } md-select.md-THEME_NAME-theme .md-select-label.md-placeholder { color: '{{foreground-2}}'; }md-select-menu.md-THEME_NAME-theme md-optgroup { color: '{{foreground-2}}'; } md-select-menu.md-THEME_NAME-theme md-optgroup md-option { color: '{{foreground-1}}'; }md-select-menu.md-THEME_NAME-theme md-option[selected] { color: '{{primary-500}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected]:focus { color: '{{primary-600}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected].md-accent { color: '{{accent-500}}'; } md-select-menu.md-THEME_NAME-theme md-option[selected].md-accent:focus { color: '{{accent-600}}'; }md-select-menu.md-THEME_NAME-theme md-option:focus:not([selected]) { background: '{{background-200}}'; }md-sidenav.md-THEME_NAME-theme { background-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme .md-track { background-color: '{{foreground-3}}'; }md-slider.md-THEME_NAME-theme .md-track-ticks { background-color: '{{foreground-4}}'; }md-slider.md-THEME_NAME-theme .md-focus-thumb { background-color: '{{foreground-2}}'; }md-slider.md-THEME_NAME-theme .md-focus-ring { border-color: '{{foreground-4}}'; }md-slider.md-THEME_NAME-theme .md-disabled-thumb { border-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme.md-min .md-thumb:after { background-color: '{{background-color}}'; }md-slider.md-THEME_NAME-theme .md-track.md-track-fill { background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-thumb:after { border-color: '{{accent-color}}'; background-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-sign { background-color: '{{accent-color}}'; } md-slider.md-THEME_NAME-theme .md-sign:after { border-top-color: '{{accent-color}}'; }md-slider.md-THEME_NAME-theme .md-thumb-text { color: '{{accent-contrast}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-track.md-track-fill { background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-thumb:after { border-color: '{{warn-color}}'; background-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-sign { background-color: '{{warn-color}}'; } md-slider.md-THEME_NAME-theme.md-warn .md-sign:after { border-top-color: '{{warn-color}}'; }md-slider.md-THEME_NAME-theme.md-warn .md-thumb-text { color: '{{warn-contrast}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-track.md-track-fill { background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-thumb:after { border-color: '{{primary-color}}'; background-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-sign { background-color: '{{primary-color}}'; } md-slider.md-THEME_NAME-theme.md-primary .md-sign:after { border-top-color: '{{primary-color}}'; }md-slider.md-THEME_NAME-theme.md-primary .md-thumb-text { color: '{{primary-contrast}}'; }md-slider.md-THEME_NAME-theme[disabled] .md-thumb:after { border-color: '{{foreground-3}}'; }md-slider.md-THEME_NAME-theme[disabled]:not(.md-min) .md-thumb:after { background-color: '{{foreground-3}}'; }.md-subheader.md-THEME_NAME-theme { color: '{{ foreground-2-0.23 }}'; background-color: '{{background-color}}'; } .md-subheader.md-THEME_NAME-theme.md-primary { color: '{{primary-color}}'; } .md-subheader.md-THEME_NAME-theme.md-accent { color: '{{accent-color}}'; } .md-subheader.md-THEME_NAME-theme.md-warn { color: '{{warn-color}}'; }md-switch.md-THEME_NAME-theme .md-thumb { background-color: '{{background-50}}'; }md-switch.md-THEME_NAME-theme .md-bar { background-color: '{{background-500}}'; }md-switch.md-THEME_NAME-theme.md-checked .md-thumb { background-color: '{{accent-color}}'; }md-switch.md-THEME_NAME-theme.md-checked .md-bar { background-color: '{{accent-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-focused .md-thumb:before { background-color: '{{accent-color-0.26}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-thumb { background-color: '{{primary-color}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary .md-bar { background-color: '{{primary-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-primary.md-focused .md-thumb:before { background-color: '{{primary-color-0.26}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-thumb { background-color: '{{warn-color}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn .md-bar { background-color: '{{warn-color-0.5}}'; }md-switch.md-THEME_NAME-theme.md-checked.md-warn.md-focused .md-thumb:before { background-color: '{{warn-color-0.26}}'; }md-switch.md-THEME_NAME-theme[disabled] .md-thumb { background-color: '{{background-400}}'; }md-switch.md-THEME_NAME-theme[disabled] .md-bar { background-color: '{{foreground-4}}'; }md-tabs.md-THEME_NAME-theme md-tabs-wrapper { background-color: transparent; border-color: '{{foreground-4}}'; }md-tabs.md-THEME_NAME-theme .md-paginator md-icon { color: '{{primary-color}}'; }md-tabs.md-THEME_NAME-theme md-ink-bar { color: '{{accent-color}}'; background: '{{accent-color}}'; }md-tabs.md-THEME_NAME-theme .md-tab { color: '{{foreground-2}}'; } md-tabs.md-THEME_NAME-theme .md-tab[disabled] { color: '{{foreground-3}}'; } md-tabs.md-THEME_NAME-theme .md-tab.md-active, md-tabs.md-THEME_NAME-theme .md-tab.md-focused { color: '{{primary-color}}'; } md-tabs.md-THEME_NAME-theme .md-tab.md-focused { background: '{{primary-color-0.1}}'; } md-tabs.md-THEME_NAME-theme .md-tab .md-ripple-container { color: '{{accent-100}}'; }md-tabs.md-THEME_NAME-theme.md-accent md-tabs-wrapper { background-color: '{{accent-color}}'; }md-tabs.md-THEME_NAME-theme.md-accent md-tab-item:not([disabled]) { color: '{{accent-100}}'; } md-tabs.md-THEME_NAME-theme.md-accent md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-accent md-tab-item:not([disabled]).md-focused { color: '{{accent-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-accent md-tab-item:not([disabled]).md-focused { background: '{{accent-contrast-0.1}}'; }md-tabs.md-THEME_NAME-theme.md-accent md-ink-bar { color: '{{primary-600-1}}'; background: '{{primary-600-1}}'; }md-tabs.md-THEME_NAME-theme.md-primary md-tabs-wrapper { background-color: '{{primary-color}}'; }md-tabs.md-THEME_NAME-theme.md-primary md-tab-item:not([disabled]) { color: '{{primary-100}}'; } md-tabs.md-THEME_NAME-theme.md-primary md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-primary md-tab-item:not([disabled]).md-focused { color: '{{primary-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-primary md-tab-item:not([disabled]).md-focused { background: '{{primary-contrast-0.1}}'; }md-tabs.md-THEME_NAME-theme.md-warn md-tabs-wrapper { background-color: '{{warn-color}}'; }md-tabs.md-THEME_NAME-theme.md-warn md-tab-item:not([disabled]) { color: '{{warn-100}}'; } md-tabs.md-THEME_NAME-theme.md-warn md-tab-item:not([disabled]).md-active, md-tabs.md-THEME_NAME-theme.md-warn md-tab-item:not([disabled]).md-focused { color: '{{warn-contrast}}'; } md-tabs.md-THEME_NAME-theme.md-warn md-tab-item:not([disabled]).md-focused { background: '{{warn-contrast-0.1}}'; }md-toolbar > md-tabs.md-THEME_NAME-theme md-tabs-wrapper { background-color: '{{primary-color}}'; }md-toolbar > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]) { color: '{{primary-100}}'; } md-toolbar > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-active, md-toolbar > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { color: '{{primary-contrast}}'; } md-toolbar > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { background: '{{primary-contrast-0.1}}'; }md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-tabs-wrapper { background-color: '{{accent-color}}'; }md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]) { color: '{{accent-100}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-active, md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { color: '{{accent-contrast}}'; } md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { background: '{{accent-contrast-0.1}}'; }md-toolbar.md-accent > md-tabs.md-THEME_NAME-theme md-ink-bar { color: '{{primary-600-1}}'; background: '{{primary-600-1}}'; }md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme md-tabs-wrapper { background-color: '{{warn-color}}'; }md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]) { color: '{{warn-100}}'; } md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-active, md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { color: '{{warn-contrast}}'; } md-toolbar.md-warn > md-tabs.md-THEME_NAME-theme md-tab-item:not([disabled]).md-focused { background: '{{warn-contrast-0.1}}'; }md-toast.md-THEME_NAME-theme { background-color: #323232; color: '{{background-50}}'; } md-toast.md-THEME_NAME-theme .md-button { color: '{{background-50}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight { color: '{{primary-A200}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight.md-accent { color: '{{accent-A200}}'; } md-toast.md-THEME_NAME-theme .md-button.md-highlight.md-warn { color: '{{warn-A200}}'; }md-toolbar.md-THEME_NAME-theme { background-color: '{{primary-color}}'; color: '{{primary-contrast}}'; } md-toolbar.md-THEME_NAME-theme .md-button { color: '{{primary-contrast}}'; } md-toolbar.md-THEME_NAME-theme.md-accent { background-color: '{{accent-color}}'; color: '{{accent-contrast}}'; } md-toolbar.md-THEME_NAME-theme.md-warn { background-color: '{{warn-color}}'; color: '{{warn-contrast}}'; }md-tooltip.md-THEME_NAME-theme { color: '{{background-A100}}'; } md-tooltip.md-THEME_NAME-theme .md-background { background-color: '{{foreground-2}}'; }");
13345
13047
  })();