diff --git a/config/custom_components/example.py b/config/custom_components/example.py
index dc18aae4b98..5bfb03353e0 100644
--- a/config/custom_components/example.py
+++ b/config/custom_components/example.py
@@ -8,6 +8,22 @@ Example component to target an entity_id to:
- turn it off if all lights are turned off
- turn it off if all people leave the house
- offer a service to turn it on for 10 seconds
+
+Configuration:
+
+To use the Example custom component you will need to add the following to
+your config/configuration.yaml
+
+example:
+ target: TARGET_ENTITY
+
+Variable:
+
+target
+*Required
+TARGET_ENTITY should be one of your devices that can be turned on and off,
+ie a light or a switch. Example value could be light.Ceiling or switch.AC
+(if you have these devices with those names).
"""
import time
import logging
@@ -31,6 +47,7 @@ CONF_TARGET = 'target'
# Name of the service that we expose
SERVICE_FLASH = 'flash'
+# Shortcut for the logger
_LOGGER = logging.getLogger(__name__)
diff --git a/config/custom_components/hello_world.py b/config/custom_components/hello_world.py
index be1b935c8ad..96d9a788b6b 100644
--- a/config/custom_components/hello_world.py
+++ b/config/custom_components/hello_world.py
@@ -3,6 +3,14 @@ custom_components.hello_world
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Implements the bare minimum that a component should implement.
+
+Configuration:
+
+To use the hello_word component you will need to add the following to your
+config/configuration.yaml
+
+hello_world:
+
"""
# The domain of your component. Should be equal to the name of your component
diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py
index f0ef54755c8..5623a8c5e7e 100644
--- a/homeassistant/components/frontend/version.py
+++ b/homeassistant/components/frontend/version.py
@@ -1,2 +1,2 @@
""" DO NOT MODIFY. Auto-generated by build_frontend script """
-VERSION = "ddf42f54c15daf472d4c8641fab8d418"
+VERSION = "db1ec3e116565340804da0e590058d60"
diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html
index 3528c02eb0f..9f5c3aefe40 100644
--- a/homeassistant/components/frontend/www_static/frontend.html
+++ b/homeassistant/components/frontend/www_static/frontend.html
@@ -9563,6 +9563,7 @@ window.hass.uiUtil.formatDate = function(dateObj) {
* iconset.applyIcon(iconNode, 'car');
*
* @element iron-iconset-svg
+ * @demo demo/index.html
*/
Polymer({
@@ -9659,7 +9660,7 @@ window.hass.uiUtil.formatDate = function(dateObj) {
/**
* Create a map of child SVG elements by id.
*
- * @return {Object} Map of id's to SVG elements.
+ * @return {!Object} Map of id's to SVG elements.
*/
_createIconMap: function() {
// Objects chained to Object.prototype (`{}`) have members. Specifically,
@@ -10011,13 +10012,6 @@ window.hass.uiUtil.formatDate = function(dateObj) {
-
-
-
-
-
-
@@ -17344,6 +17342,7 @@ window.hass.uiUtil.domainIcon = function(domain, state) {
this.wave.style.transform = 'scale3d(' + scale + ',' + scale + ',1)';
},
+ /** @param {Event=} event */
downAction: function(event) {
var xCenter = this.containerMetrics.width / 2;
var yCenter = this.containerMetrics.height / 2;
@@ -17388,6 +17387,7 @@ window.hass.uiUtil.domainIcon = function(domain, state) {
this.waveContainer.style.height = this.containerMetrics.size + 'px';
},
+ /** @param {Event=} event */
upAction: function(event) {
if (!this.isMouseDown) {
return;
@@ -17511,11 +17511,9 @@ window.hass.uiUtil.domainIcon = function(domain, state) {
var ownerRoot = Polymer.dom(this).getOwnerRoot();
var target;
- if (ownerRoot) {
+ if (this.parentNode.nodeType == 11) { // DOCUMENT_FRAGMENT_NODE
target = ownerRoot.host;
- }
-
- if (!target) {
+ } else {
target = this.parentNode;
}
@@ -17529,8 +17527,8 @@ window.hass.uiUtil.domainIcon = function(domain, state) {
},
attached: function() {
- this._listen(this.target, 'up', this.upAction.bind(this));
- this._listen(this.target, 'down', this.downAction.bind(this));
+ this.listen(this.target, 'up', 'upAction');
+ this.listen(this.target, 'down', 'downAction');
if (!this.target.hasAttribute('noink')) {
this.keyEventTarget = this.target;
@@ -17556,6 +17554,7 @@ window.hass.uiUtil.domainIcon = function(domain, state) {
}, 1);
},
+ /** @param {Event=} event */
downAction: function(event) {
if (this.holdDown && this.ripples.length > 0) {
return;
@@ -17570,6 +17569,7 @@ window.hass.uiUtil.domainIcon = function(domain, state) {
}
},
+ /** @param {Event=} event */
upAction: function(event) {
if (this.holdDown) {
return;
@@ -17705,12 +17705,12 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
left: -15px;
width: 48px;
height: 48px;
- color: var(--paper-checkbox-unchecked-ink-color);
+ color: var(--paper-checkbox-unchecked-ink-color, --primary-text-color);
opacity: 0.6;
}
:host #ink[checked] {
- color: var(--paper-checkbox-checked-ink-color);
+ color: var(--paper-checkbox-checked-ink-color, --default-primary-color);
}
:host #checkbox {
@@ -17718,7 +17718,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
box-sizing: border-box;
height: 100%;
border: solid 2px;
- border-color: var(--paper-checkbox-unchecked-color);
+ border-color: var(--paper-checkbox-unchecked-color, --primary-text-color);
border-radius: 2px;
pointer-events: none;
-webkit-transition: background-color 140ms, border-color 140ms;
@@ -17762,8 +17762,8 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
}
:host #checkbox.checked {
- background-color: var(--paper-checkbox-checked-color);
- border-color: var(--paper-checkbox-checked-color);
+ background-color: var(--paper-checkbox-checked-color, --default-primary-color);
+ border-color: var(--paper-checkbox-checked-color, --default-primary-color);
}
:host #checkmark {
@@ -17790,7 +17790,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
padding-left: 8px;
white-space: normal;
pointer-events: none;
- color: var(--paper-checkbox-label-color);
+ color: var(--paper-checkbox-label-color, --primary-text-color);
}
#checkboxLabel[hidden] {
@@ -17804,11 +17804,11 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
:host([disabled]) #checkbox {
opacity: 0.5;
- border-color: var(--paper-checkbox-unchecked-color);
+ border-color: var(--paper-checkbox-unchecked-color, --primary-text-color);
}
:host([disabled][checked]) #checkbox {
- background-color: var(--paper-checkbox-unchecked-color);
+ background-color: var(--paper-checkbox-unchecked-color, --primary-text-color);
opacity: 0.5;
}
@@ -18139,7 +18139,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
background: var(--paper-input-container-focus-color, --default-primary-color);
}
- .is-highlighted .focused-line {
+ .underline.is-highlighted .focused-line {
-webkit-transform: none;
transform: none;
-webkit-transition: -webkit-transform 0.25s;
@@ -18148,7 +18148,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
@apply(--paper-transition-easing);
}
- .is-invalid .focused-line {
+ .underline.is-invalid .focused-line {
background: var(--paper-input-container-invalid-color, --google-red-500);
-webkit-transform: none;
@@ -18335,10 +18335,10 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
},
_addons: {
- type: Array,
- value: function() {
- return [];
- }
+ type: Array
+ // do not set a default value here intentionally - it will be initialized lazily when a
+ // distributed child is attached, which may occur before configuration for this element
+ // in polyfill.
},
_inputHasContent: {
@@ -18368,7 +18368,7 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
_boundOnInput: {
type: Function,
value: function() {
- this._onInput.bind(this)
+ return this._onInput.bind(this);
}
},
@@ -18399,6 +18399,9 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
},
ready: function() {
+ if (!this._addons) {
+ this._addons = [];
+ }
this.addEventListener('focus', this._boundOnFocus, true);
this.addEventListener('blur', this._boundOnBlur, true);
if (this.attrForValue) {
@@ -18413,8 +18416,16 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
},
_onAddonAttached: function(event) {
- this._addons.push(event.target);
- this._handleValue(this._inputElement);
+ if (!this._addons) {
+ this._addons = [];
+ }
+ var target = event.target;
+ if (this._addons.indexOf(target) === -1) {
+ this._addons.push(target);
+ if (this.isAttached) {
+ this._handleValue(this._inputElement);
+ }
+ }
},
_onFocus: function() {
@@ -19478,7 +19489,9 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
*/
dragging: {
type: Boolean,
- value: false
+ value: false,
+ readOnly: true,
+ notify: true
},
/**
@@ -19534,6 +19547,7 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
reflectToAttribute: true,
type: Boolean,
value: false,
+ readOnly: true,
notify: true
},
@@ -19542,7 +19556,9 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
*/
peeking: {
type: Boolean,
- value: false
+ value: false,
+ readOnly: true,
+ notify: true
},
/**
@@ -19567,6 +19583,7 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
*/
selected: {
reflectToAttribute: true,
+ notify: true,
type: String,
value: null
},
@@ -19693,7 +19710,7 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
},
_responsiveChange: function(narrow) {
- this.narrow = narrow;
+ this._setNarrow(narrow);
if (this.narrow) {
this.selected = this.defaultSelected;
@@ -19724,12 +19741,12 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
this.width = this.$.drawer.offsetWidth;
this._moveDrawer(this._translateXForDeltaX(this.rightDrawer ?
-this.edgeSwipeSensitivity : this.edgeSwipeSensitivity));
- this.peeking = true;
+ this._setPeeking(true);
},
_stopEdgePeek: function() {
if (this.peeking) {
- this.peeking = false;
+ this._setPeeking(false);
this._moveDrawer(null);
}
},
@@ -19768,13 +19785,13 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
x <= this.edgeSwipeSensitivity);
},
- _trackStart: function() {
+ _trackStart: function(event) {
if (this._swipeAllowed()) {
sharedPanel = this;
- this.dragging = true;
+ this._setDragging(true);
if (this._isMainSelected()) {
- this.dragging = this.peeking || this._isEdgeTouch(event);
+ this._setDragging(this.peeking || this._isEdgeTouch(event));
}
if (this.dragging) {
@@ -19803,7 +19820,7 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
// Ignore trackx until we move past the edge peek.
return;
}
- this.peeking = false;
+ this._setPeeking(false);
}
this._moveDrawer(this._translateXForDeltaX(dx));
@@ -19814,7 +19831,7 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
if (this.dragging) {
var xDirection = e.detail.dx > 0;
- this.dragging = false;
+ this._setDragging(false);
this.transition = true;
sharedPanel = null;
this._moveDrawer(null);
@@ -19866,6 +19883,17 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
z-index: 0;
}
+ :root {
+ /**
+ * Default paper header panel shadow
+ */
+ --paper-header-panel-shadow: {
+ height: 6px;
+ bottom: -6px;
+ box-shadow: inset 0px 5px 6px -3px rgba(0, 0, 0, 0.4);
+ };
+ }
+
#mainContainer {
@apply(--layout-flex);
@@ -19969,19 +19997,6 @@ iron-selector:not(.narrow-layout) #main ::content [paper-drawer-toggle] {
-
-
+
-
-
-
+paper-ripple {
+ color: var(--paper-slider-knob-color, --google-blue-700);
+}
+
+
+
+
+
@@ -25255,17 +25250,18 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN
-
-
+
+
-
+