diff --git a/dashboard-ui/vulcanize-out.html b/dashboard-ui/vulcanize-out.html
index c9559726a7..040a7a7bac 100644
--- a/dashboard-ui/vulcanize-out.html
+++ b/dashboard-ui/vulcanize-out.html
@@ -11490,7 +11490,11 @@ The `aria-labelledby` attribute will be set to the header element, if one exists
* @return {boolean} True if `values` is valid.
*/
validate: function(values) {
- var valid = this._validator && this._validator.validate(values);
+ var valid = true;
+ if (this.hasValidator()) {
+ valid = this._validator.validate(values);
+ }
+
this.invalid = !valid;
return valid;
}
@@ -12004,6 +12008,24 @@ is separate from validation, and `allowed-pattern` does not affect how the input
type: Number
},
+ // Nonstandard attributes for binding if needed
+
+ /**
+ * Bind this to the ``'s `autocapitalize` property.
+ */
+ autocapitalize: {
+ type: String,
+ value: 'none'
+ },
+
+ /**
+ * Bind this to the ``'s `autocorrect` property.
+ */
+ autocorrect: {
+ type: String,
+ value: 'off'
+ },
+
_ariaDescribedBy: {
type: String,
value: ''
@@ -12015,6 +12037,10 @@ is separate from validation, and `allowed-pattern` does not affect how the input
'addon-attached': '_onAddonAttached'
},
+ observers: [
+ '_focusedControlStateChanged(focused)'
+ ],
+
/**
* Returns a reference to the input element.
*/
@@ -12079,6 +12105,24 @@ is separate from validation, and `allowed-pattern` does not affect how the input
return placeholder || alwaysFloatLabel;
},
+ _focusedControlStateChanged: function(focused) {
+ // IronControlState stops the focus and blur events in order to redispatch them on the host
+ // element, but paper-input-container listens to those events. Since there are more
+ // pending work on focus/blur in IronControlState, I'm putting in this hack to get the
+ // input focus state working for now.
+ if (!this.$.container) {
+ this.$.container = Polymer.dom(this.root).querySelector('paper-input-container');
+ if (!this.$.container) {
+ return;
+ }
+ }
+ if (focused) {
+ this.$.container._onFocus();
+ } else {
+ this.$.container._onBlur();
+ }
+ },
+
_updateAriaLabelledBy: function() {
var label = Polymer.dom(this.root).querySelector('label');
if (!label) {
@@ -12097,6 +12141,7 @@ is separate from validation, and `allowed-pattern` does not affect how the input
};
+ /** @polymerBehavior */
Polymer.PaperInputBehavior = [Polymer.IronControlState, Polymer.PaperInputBehaviorImpl];
@@ -13215,7 +13260,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
* SHRINK_TIME = 400ms
*/
- :host {
+:host {
display: inline-block;
position: relative;
width: 28px; /* CONTAINERWIDTH */
@@ -13225,6 +13270,11 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
#spinnerContainer {
width: 100%;
height: 100%;
+
+ /* The spinner does not have any contents that would have to be
+ * flipped if the direction changes. Always use ltr so that the
+ * style works out correctly in both cases. */
+ direction: ltr;
}
#spinnerContainer.active {
@@ -13563,123 +13613,101 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
@@ -14439,6 +14467,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
position: relative;
padding: 8px;
outline: none;
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
@@ -15660,6 +15689,9 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
},
_positionBar: function(width, left) {
+ width = width || 0;
+ left = left || 0;
+
this._width = width;
this._left = left;
this.transform(
@@ -15863,6 +15895,8 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
transform: scale3d(0,1,1);
background: var(--paper-input-container-focus-color, --default-primary-color);
+
+ @apply(--paper-input-container-underline-focus);
}
.underline.is-highlighted .focused-line {
@@ -15888,12 +15922,16 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
.unfocused-line {
height: 1px;
background: var(--paper-input-container-color, --secondary-text-color);
+
+ @apply(--paper-input-container-underline);
}
:host([disabled]) .unfocused-line {
border-bottom: 1px dashed;
border-color: var(--paper-input-container-color, --secondary-text-color);
background: transparent;
+
+ @apply(--paper-input-container-underline-disabled);
}
.input-content {
@@ -15928,6 +15966,8 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
.input-content.label-is-highlighted ::content label,
.input-content.label-is-highlighted ::content .paper-input-label {
color: var(--paper-input-container-focus-color, --default-primary-color);
+
+ @apply(--paper-input-container-label-focus);
}
.input-content.is-invalid ::content label,
@@ -16265,8 +16305,8 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
@@ -16301,10 +16341,6 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
Polymer.PaperInputAddonBehavior
],
- hostAttributes: {
- 'role': 'alert'
- },
-
properties: {
/**
@@ -16423,7 +16459,7 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
-
+
[[errorMessage]]
@@ -16448,6 +16484,7 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
is: 'paper-input',
behaviors: [
+ Polymer.IronFormElementBehavior,
Polymer.PaperInputBehavior,
Polymer.IronControlState
]
@@ -17159,7 +17196,7 @@ paper-ripple {
position: relative;
outline: 0;
- @apply(--paper-menu-colored-focused-item);
+ @apply(--paper-menu-focused-item);
}
.content > ::content > *:focus:after {
@@ -17169,7 +17206,7 @@ paper-ripple {
opacity: 0.12;
content: '';
- @apply(--paper-menu-colored-focused-item-after);
+ @apply(--paper-menu-focused-item-after);
}
.content > ::content > *[colored]:focus:after {