diff --git a/src/panels/lovelace/cards/hui-picture-card.js b/src/panels/lovelace/cards/hui-picture-card.js new file mode 100644 index 0000000000..1477d34d82 --- /dev/null +++ b/src/panels/lovelace/cards/hui-picture-card.js @@ -0,0 +1,67 @@ +import { html } from '@polymer/polymer/lib/utils/html-tag.js'; +import { PolymerElement } from '@polymer/polymer/polymer-element.js'; + +import '../../../components/ha-card.js'; + +import NavigateMixin from '../../../mixins/navigate-mixin.js'; + +/* + * @appliesMixin NavigateMixin + */ +class HuiPictureCard extends NavigateMixin(PolymerElement) { + static get template() { + return html` + + + + + + `; + } + + static get properties() { + return { + hass: Object, + _config: Object, + }; + } + + getCardSize() { + return 3; + } + + setConfig(config) { + if (!config || !config.image) { + throw new Error('Error in card configuration.'); + } + + this._config = config; + } + + _computeClickable(config) { + return config.navigation_path || config.service; + } + + _cardClicked() { + if (this._config.navigation_path) { + this.navigate(this._config.navigation_path); + } + if (this._config.service) { + const [domain, service] = this._config.service.split('.', 2); + this.hass.callService(domain, service, this._config.service_data); + } + } +} + +customElements.define('hui-picture-card', HuiPictureCard); diff --git a/src/panels/lovelace/common/create-card-element.js b/src/panels/lovelace/common/create-card-element.js index 573f1f3074..d5cc9f2f67 100644 --- a/src/panels/lovelace/common/create-card-element.js +++ b/src/panels/lovelace/common/create-card-element.js @@ -10,6 +10,7 @@ import '../cards/hui-horizontal-stack-card.js'; import '../cards/hui-iframe-card.js'; import '../cards/hui-markdown-card.js'; import '../cards/hui-media-control-card.js'; +import '../cards/hui-picture-card.js'; import '../cards/hui-picture-elements-card'; import '../cards/hui-picture-entity-card'; import '../cards/hui-picture-glance-card'; @@ -30,6 +31,7 @@ const CARD_TYPES = [ 'iframe', 'markdown', 'media-control', + 'picture', 'picture-elements', 'picture-entity', 'picture-glance',