From 376228e0fe972d5e243bf41d6cbebed8b25a2e05 Mon Sep 17 00:00:00 2001 From: Eu Date: Mon, 25 Jun 2018 21:24:04 +0200 Subject: [PATCH] [Lovelace] Add iframe card (#1330) * Create hui-iframe-card.js * Update compute-card-element.js * Update hui-iframe-card.js * Update hui-iframe-card.js * Update hui-iframe-card.js * Update hui-iframe-card.js * Lint * Update hui-iframe-card.js * Change height to aspect_ratio --- src/panels/lovelace/cards/hui-iframe-card.js | 71 +++++++++++++++++++ .../lovelace/common/compute-card-element.js | 2 + 2 files changed, 73 insertions(+) create mode 100644 src/panels/lovelace/cards/hui-iframe-card.js diff --git a/src/panels/lovelace/cards/hui-iframe-card.js b/src/panels/lovelace/cards/hui-iframe-card.js new file mode 100644 index 0000000000..a3260d8433 --- /dev/null +++ b/src/panels/lovelace/cards/hui-iframe-card.js @@ -0,0 +1,71 @@ +import { html } from '@polymer/polymer/lib/utils/html-tag.js'; +import { PolymerElement } from '@polymer/polymer/polymer-element.js'; + +class HuiIframeCard extends PolymerElement { + static get properties() { + return { + config: { + type: Object, + observer: '_configChanged' + } + }; + } + + static get template() { + return html` + + + +
+ +
+
+ `; + } + + _computeTitle(config) { + if (!config.url) return 'Error: URL not configured'; + return config.title || ''; + } + + _configChanged(config) { + this.shadowRoot.querySelector('.wrapper').style.paddingTop = config.aspect_ratio || '50%'; + } + + getCardSize() { + return 1 + (this.offsetHeight / 50); + } +} +customElements.define('hui-iframe-card', HuiIframeCard); diff --git a/src/panels/lovelace/common/compute-card-element.js b/src/panels/lovelace/common/compute-card-element.js index da0caab0ac..722c71cd61 100644 --- a/src/panels/lovelace/common/compute-card-element.js +++ b/src/panels/lovelace/common/compute-card-element.js @@ -10,6 +10,7 @@ import '../cards/hui-picture-glance-card'; import '../cards/hui-plant-status-card.js'; import '../cards/hui-weather-forecast-card'; import '../cards/hui-error-card.js'; +import '../cards/hui-iframe-card.js'; const CARD_TYPES = [ 'camera-preview', @@ -18,6 +19,7 @@ const CARD_TYPES = [ 'entity-picture', 'glance', 'history-graph', + 'iframe', 'markdown', 'media-control', 'picture-glance',