From c0414887f8bc1952210a2d93fa5a4448153fb0b3 Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 7 Sep 2022 16:22:47 -0400 Subject: [PATCH 01/39] Add ulm_icon_alert_state variable for specifying alert state --- .../card_templates/internal_templates/icon_alert.yaml | 4 ++-- .../card_templates/internal_templates/icon_info_alert.yaml | 4 ++-- .../internal_templates/icon_more_info_alert.yaml | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_alert.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_alert.yaml index 7a8ff49f9..25df37003 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_alert.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_alert.yaml @@ -7,7 +7,7 @@ icon_alert: show_name: false state: - operator: "template" - value: "[[[ if (entity.state == 'unavailable' || entity.state == 'on'){ return true; } ]]]" + value: "[[[ if (entity.state == 'unavailable' || entity.state == (variables.ulm_icon_alert_state || 'on')){ return true; } ]]]" styles: icon: - color: "rgba(var(--color-blue),1)" @@ -54,7 +54,7 @@ icon_alert: custom_fields: notification: > [[[ - if (entity.state =="unavailable" || entity.state == "on"){ + if (entity.state =="unavailable" || entity.state == (variables.ulm_icon_alert_state || "on")){ return `` } ]]] diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_info_alert.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_info_alert.yaml index 108a53b09..93db0adbb 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_info_alert.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_info_alert.yaml @@ -8,7 +8,7 @@ icon_info_alert: show_name: true state: - operator: "template" - value: "[[[ if (entity.state == 'unavailable' || entity.state == 'on'){ return true; } ]]]" + value: "[[[ if (entity.state == 'unavailable' || entity.state == (variables.ulm_icon_alert_state || 'on')){ return true; } ]]]" styles: icon: - color: "rgba(var(--color-blue),1)" @@ -75,7 +75,7 @@ icon_info_alert: custom_fields: notification: > [[[ - if (entity.state =="unavailable" || entity.state == "on"){ + if (entity.state =="unavailable" || entity.state == (variables.ulm_icon_alert_state || "on")){ return `` } ]]] diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_alert.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_alert.yaml index 7fc2628c8..81da053af 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_alert.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_alert.yaml @@ -43,6 +43,7 @@ icon_more_info_alert: variables: ulm_input_select_option: "[[[ return variables.ulm_input_select_option; ]]]" ulm_input_select: "[[[ return variables.ulm_input_select; ]]]" + ulm_icon_alert_state: "[[[ return variables.ulm_icon_alert_state; ]]]" ulm_icon_tap_action: "[[[ return variables.ulm_icon_tap_action; ]]]" ulm_icon_tap_haptic: "[[[ return variables.ulm_icon_tap_haptic; ]]]" ulm_icon_tap_navigate_path: "[[[ return variables.ulm_icon_tap_navigate_path; ]]]" From 04a6f9b0a09513350f382f33162d367c04c117b4 Mon Sep 17 00:00:00 2001 From: Chris Date: Wed, 7 Sep 2022 16:33:51 -0400 Subject: [PATCH 02/39] Update card_binary_sensor_alert.md --- docs/usage/cards/card_binary_sensor_alert.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/usage/cards/card_binary_sensor_alert.md b/docs/usage/cards/card_binary_sensor_alert.md index 619026fff..f78dc99eb 100644 --- a/docs/usage/cards/card_binary_sensor_alert.md +++ b/docs/usage/cards/card_binary_sensor_alert.md @@ -19,6 +19,7 @@ The `binary-sensor-card` is to show the state (on/off, open/close, etc.) of a bi | ulm_show_last_changed | | :material-close: | `true` or `false` | | ulm_card_binary_sensor_alert_name | | :material-close: | Set custom Name | | ulm_card_binary_sensor_alert_icon | | :material-close: | Set custom Icon | +| ulm_icon_alert_state | "on" | :material-close: | State to alert on | !!! Warning "⚠️ Breaking Change `v1.0.1`" From 262d4de3916ea7b84658a5021eab268ec4366085 Mon Sep 17 00:00:00 2001 From: John Doe Date: Fri, 9 Sep 2022 07:38:21 -0400 Subject: [PATCH 03/39] Use boolean flag for alert invert state --- .../internal_templates/icon_alert.yaml | 15 +++++++++++++-- .../internal_templates/icon_info_alert.yaml | 15 +++++++++++++-- .../internal_templates/icon_more_info_alert.yaml | 2 +- docs/usage/cards/card_binary_sensor_alert.md | 2 +- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_alert.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_alert.yaml index 25df37003..3731e4b1b 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_alert.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_alert.yaml @@ -7,7 +7,14 @@ icon_alert: show_name: false state: - operator: "template" - value: "[[[ if (entity.state == 'unavailable' || entity.state == (variables.ulm_icon_alert_state || 'on')){ return true; } ]]]" + value: > + [[[ + var check_state = 'on'; + if (variables.ulm_icon_alert_invert_state) { + check_state = 'off'; + } + if (entity.state == 'unavailable' || entity.state == check_state){ return true; } + ]]] styles: icon: - color: "rgba(var(--color-blue),1)" @@ -54,7 +61,11 @@ icon_alert: custom_fields: notification: > [[[ - if (entity.state =="unavailable" || entity.state == (variables.ulm_icon_alert_state || "on")){ + var check_state = 'on'; + if (variables.ulm_icon_alert_invert_state) { + check_state = 'off'; + } + if (entity.state == "unavailable" || entity.state == check_state){ return `` } ]]] diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_info_alert.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_info_alert.yaml index 93db0adbb..6903f3b67 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_info_alert.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_info_alert.yaml @@ -8,7 +8,14 @@ icon_info_alert: show_name: true state: - operator: "template" - value: "[[[ if (entity.state == 'unavailable' || entity.state == (variables.ulm_icon_alert_state || 'on')){ return true; } ]]]" + value: > + [[[ + var check_state = 'on'; + if (variables.ulm_icon_alert_invert_state) { + check_state = 'off'; + } + if (entity.state == 'unavailable' || entity.state == check_state){ return true; } + ]]] styles: icon: - color: "rgba(var(--color-blue),1)" @@ -75,7 +82,11 @@ icon_info_alert: custom_fields: notification: > [[[ - if (entity.state =="unavailable" || entity.state == (variables.ulm_icon_alert_state || "on")){ + var check_state = 'on'; + if (variables.ulm_icon_alert_invert_state) { + check_state = 'off'; + } + if (entity.state == "unavailable" || entity.state == check_state){ return `` } ]]] diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_alert.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_alert.yaml index 81da053af..da2ed80c4 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_alert.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_alert.yaml @@ -43,7 +43,7 @@ icon_more_info_alert: variables: ulm_input_select_option: "[[[ return variables.ulm_input_select_option; ]]]" ulm_input_select: "[[[ return variables.ulm_input_select; ]]]" - ulm_icon_alert_state: "[[[ return variables.ulm_icon_alert_state; ]]]" + ulm_icon_alert_invert_state: "[[[ return variables.ulm_icon_alert_invert_state; ]]]" ulm_icon_tap_action: "[[[ return variables.ulm_icon_tap_action; ]]]" ulm_icon_tap_haptic: "[[[ return variables.ulm_icon_tap_haptic; ]]]" ulm_icon_tap_navigate_path: "[[[ return variables.ulm_icon_tap_navigate_path; ]]]" diff --git a/docs/usage/cards/card_binary_sensor_alert.md b/docs/usage/cards/card_binary_sensor_alert.md index f78dc99eb..4ab03f5a7 100644 --- a/docs/usage/cards/card_binary_sensor_alert.md +++ b/docs/usage/cards/card_binary_sensor_alert.md @@ -19,7 +19,7 @@ The `binary-sensor-card` is to show the state (on/off, open/close, etc.) of a bi | ulm_show_last_changed | | :material-close: | `true` or `false` | | ulm_card_binary_sensor_alert_name | | :material-close: | Set custom Name | | ulm_card_binary_sensor_alert_icon | | :material-close: | Set custom Icon | -| ulm_icon_alert_state | "on" | :material-close: | State to alert on | +| ulm_icon_alert_invert_state | false | :material-close: | Invert the alert state logic so an alert is shown when the sensor is "off" | !!! Warning "⚠️ Breaking Change `v1.0.1`" From 1ce49f3eee97326327f870726b61e8d1a32319da Mon Sep 17 00:00:00 2001 From: Martin Date: Sat, 10 Sep 2022 21:24:01 +0200 Subject: [PATCH 04/39] Fix action_card if no entity is set. --- .../lovelace/ulm_templates/actions/actions_card.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card.yaml index 5b7bbbda0..ab93d370b 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card.yaml @@ -43,7 +43,7 @@ ulm_actions_card: if (action == 'adaptive'){ return 'input_select.select_option'; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return 'media_player.media_play_pause'; } return variables.ulm_card_tap_service; @@ -58,7 +58,7 @@ ulm_actions_card: 'entity_id': variables.ulm_input_select }; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return { 'entity_id': entity.entity_id }; @@ -161,7 +161,7 @@ ulm_actions_card: if (action == 'adaptive'){ return 'input_select.select_option'; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return 'media_player.media_play_pause'; } return variables.ulm_card_hold_service; @@ -176,7 +176,7 @@ ulm_actions_card: 'entity_id': variables.ulm_input_select }; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return { 'entity_id': entity.entity_id }; @@ -279,7 +279,7 @@ ulm_actions_card: if (action == 'adaptive'){ return 'input_select.select_option'; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return 'media_player.media_play_pause'; } return variables.ulm_card_double_tap_service; @@ -294,7 +294,7 @@ ulm_actions_card: 'entity_id': variables.ulm_input_select }; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return { 'entity_id': entity.entity_id }; From e8290f7eafc563e046fa884826159f19593b3af0 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 15:57:52 +0200 Subject: [PATCH 05/39] Update actions_card.yaml - Fix cropped/small popups on desktops - This also include the #985 fix --- .../ulm_templates/actions/actions_card.yaml | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card.yaml index 5b7bbbda0..bd9b1322f 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card.yaml @@ -43,7 +43,7 @@ ulm_actions_card: if (action == 'adaptive'){ return 'input_select.select_option'; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return 'media_player.media_play_pause'; } return variables.ulm_card_tap_service; @@ -58,7 +58,7 @@ ulm_actions_card: 'entity_id': variables.ulm_input_select }; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return { 'entity_id': entity.entity_id }; @@ -74,8 +74,7 @@ ulm_actions_card: --popup-border-radius: 20px; --popup-padding-x: 24px; --popup-padding-y: 20px; - --popup-max-width: auto - --popup-min-width: 800px; + --popup-min-width: 1000px; card_mod: style: ha-dialog$: | @@ -161,7 +160,7 @@ ulm_actions_card: if (action == 'adaptive'){ return 'input_select.select_option'; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return 'media_player.media_play_pause'; } return variables.ulm_card_hold_service; @@ -176,7 +175,7 @@ ulm_actions_card: 'entity_id': variables.ulm_input_select }; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return { 'entity_id': entity.entity_id }; @@ -192,8 +191,7 @@ ulm_actions_card: --popup-border-radius: 20px; --popup-padding-x: 24px; --popup-padding-y: 20px; - --popup-max-width: auto - --popup-min-width: 800px; + --popup-min-width: 1000px; card_mod: style: ha-dialog$: | @@ -279,7 +277,7 @@ ulm_actions_card: if (action == 'adaptive'){ return 'input_select.select_option'; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return 'media_player.media_play_pause'; } return variables.ulm_card_double_tap_service; @@ -294,7 +292,7 @@ ulm_actions_card: 'entity_id': variables.ulm_input_select }; } - if(entity.entity_id.startsWith("media_player.")){ + if((entity != null) && entity.entity_id.startsWith("media_player.")){ return { 'entity_id': entity.entity_id }; @@ -310,8 +308,7 @@ ulm_actions_card: --popup-border-radius: 20px; --popup-padding-x: 24px; --popup-padding-y: 20px; - --popup-max-width: auto - --popup-min-width: 800px; + --popup-min-width: 1000px; card_mod: style: ha-dialog$: | From b684e034f458b65d4f87afe16874466999cfbeca Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 15:58:42 +0200 Subject: [PATCH 06/39] Update actions_icon.yaml - Fix cropped/small popups on desktops - This also include the #985 fix --- .../lovelace/ulm_templates/actions/actions_icon.yaml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_icon.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_icon.yaml index b6e367def..29eebdfb6 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_icon.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_icon.yaml @@ -74,8 +74,7 @@ ulm_actions_icon: --popup-border-radius: 20px; --popup-padding-x: 24px; --popup-padding-y: 20px; - --popup-max-width: auto - --popup-min-width: 800px; + --popup-min-width: 1000px; card_mod: style: ha-dialog$: | @@ -191,8 +190,7 @@ ulm_actions_icon: --popup-border-radius: 20px; --popup-padding-x: 24px; --popup-padding-y: 20px; - --popup-max-width: auto - --popup-min-width: 800px; + --popup-min-width: 1000px; card_mod: style: ha-dialog$: | @@ -256,7 +254,7 @@ ulm_actions_icon: if (domain == "media_player" && action == 'toggle'){ action = 'call-service'; } - if (action == 'popup' && (variables.ulm_card_light_enable_popup || variables.ulm_card_media_player_enable_popup || variables.ulm_card_thermostat_enable_popup) ){ + if (action == 'popup' && (variables.ulm_card_light_enable_popup || variables.ulm_card_media_player_enable_popup || variables.ulm_card_thermostat_enable_popup || variables.ulm_card_cover_screens_enable_popup)){ action = 'fire-dom-event' } @@ -313,8 +311,7 @@ ulm_actions_icon: --popup-border-radius: 20px; --popup-padding-x: 24px; --popup-padding-y: 20px; - --popup-max-width: auto - --popup-min-width: 800px; + --popup-min-width: 1000px; card_mod: style: ha-dialog$: | From d2efafe372a14173410088807bbf5ec2bd648d96 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 15:59:17 +0200 Subject: [PATCH 07/39] Update actions_name.yaml - Fix cropped/small popups on desktops - This also include the #985 fix --- .../lovelace/ulm_templates/actions/actions_name.yaml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_name.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_name.yaml index dfacb70e8..7f4d631dd 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_name.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_name.yaml @@ -75,8 +75,7 @@ ulm_actions_name: --popup-border-radius: 20px; --popup-padding-x: 24px; --popup-padding-y: 20px; - --popup-max-width: auto - --popup-min-width: 800px; + --popup-min-width: 1000px; card_mod: style: ha-dialog$: | @@ -193,8 +192,7 @@ ulm_actions_name: --popup-border-radius: 20px; --popup-padding-x: 24px; --popup-padding-y: 20px; - --popup-max-width: auto - --popup-min-width: 800px; + --popup-min-width: 1000px; card_mod: style: ha-dialog$: | @@ -311,8 +309,7 @@ ulm_actions_name: --popup-border-radius: 20px; --popup-padding-x: 24px; --popup-padding-y: 20px; - --popup-max-width: auto - --popup-min-width: 800px; + --popup-min-width: 1000px; card_mod: style: ha-dialog$: | From 68167ea613fb159f4e95bb388927e3d76714bcb0 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 16:02:17 +0200 Subject: [PATCH 08/39] Update popup_light_brightness.yaml - Fix padding issue - Fix header and footer issue - Remove scrolling on destkops - Fix alignment for brightness button --- .../popup_templates/popups/popup_light_brightness.yaml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml index e40796452..d0c2afd40 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml @@ -44,10 +44,11 @@ popup_light_brightness: card: - background: "var(--primary-background-color)" - box-shadow: "none" - - padding: "0% 2% 2% 2%" + - padding: "0%" custom_fields: header: - - align-self: "start" + - align-self: "center" + - margin-bottom: "4px" content1: - align-self: "center" - display: > @@ -81,8 +82,8 @@ popup_light_brightness: buttons: - display: "none" footer: - - align-self: "start" - - margin-top: "25px" + - align-self: "absolute" + - margin-top: "12px" extra_styles: | @media (max-width: 800px) { #container { @@ -93,6 +94,7 @@ popup_light_brightness: #buttons { display: block !important; align-self: start !important; + margin-left: 14px; } #content2 { display: none !important; From 9a4c446597001bd78b9fe524a06bd99317742980 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 16:04:48 +0200 Subject: [PATCH 09/39] Update popup_light_color.yaml - Fix alignment for brightness button --- .../ulm_templates/popup_templates/popups/popup_light_color.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color.yaml index 4e2272d72..9a4b646a8 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color.yaml @@ -24,6 +24,7 @@ popup_light_color: #buttons { display: block !important; align-self: start !important; + margin-left: 14px; } #content1 { display: none; From fc3d7e97f94017dbde789c08ac0b312a6a0cf11c Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 16:05:13 +0200 Subject: [PATCH 10/39] Update popup_light_color_temp.yaml - Fix alignment for brightness button --- .../popup_templates/popups/popup_light_color_temp.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml index c21cd5da0..7c166759a 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml @@ -24,6 +24,7 @@ popup_light_color_temp: #buttons { display: block !important; align-self: start !important; + margin-left: 14px; } #content1 { display: none; From 1bd939bb59020ec6d24f00bb33c57dce3e4a808b Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 16:10:29 +0200 Subject: [PATCH 11/39] Create popup_header_light.yaml - New header for light popup, will have the same behaviour as all other card icons (light icon = colored icon / img_cell). - Added brightness label --- .../popup_buttons/popup_header_light.yaml | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_header_light.yaml diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_header_light.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_header_light.yaml new file mode 100644 index 000000000..a7bf3147b --- /dev/null +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_header_light.yaml @@ -0,0 +1,54 @@ +--- +popup_header_light: + template: + - "popup_button" + - "ulm_translation_engine" + label: |- + [[[ + if (entity.state == 'off') { + return variables.ulm_translation_state; + } else { + return variables.ulm_translation_state + ' • ' + Math.round(states[entity.entity_id].attributes.brightness / 2.55) + '%'; + } + ]]] + show_name: true + show_label: true + styles: + grid: + - grid-template-areas: "'i' 'n' 'l'" + - grid-template-columns: "auto" + - grid-template-rows: "min-content min-content min-content" + label: + - justify-self: "center" + - font-weight: "bold" + - font-size: "12px" + - filter: "opacity(40%)" + icon: + - color: > + [[[ + var color = entity.attributes.rgb_color; + if(entity.state == "on"){ + if(color){ + return "rgba(" + color + ",1)"; + } else { + return "rgba(var(--color-yellow),1)"; + } + } else { + return "var(--color-theme)"; + } + ]]] + img_cell: + - left: "2px" + - background-color: > + [[[ + var color = entity.attributes.rgb_color; + if(entity.state == "on"){ + if(color){ + return "rgba(" + color + ",0.2)"; + } else { + return "rgba(var(--color-yellow),0.2)"; + } + } else { + return "var(--card-background-color)"; + } + ]]] From 341377252af22200d78abc22f0971887f2c07f57 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 16:12:16 +0200 Subject: [PATCH 12/39] Update popup_light_brightness.yaml - Change to integrate the new light header. --- .../popup_templates/popups/popup_light_brightness.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml index d0c2afd40..caaffb749 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml @@ -107,7 +107,7 @@ popup_light_brightness: header: card: type: "custom:button-card" - template: "popup_header" + template: "popup_header_light" entity: "[[[ return entity.entity_id ]]]" content1: card: From ebed12c1ed3dadd0efa73a6c095877123292cfc0 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 16:14:19 +0200 Subject: [PATCH 13/39] Update popup_light_brightness.yaml - Fixed grid-template-columns issue at line 255, will fix the alignment of the brightness/temperature/color icons. --- .../popup_templates/popups/popup_light_brightness.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml index caaffb749..1827d150e 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml @@ -252,7 +252,7 @@ popup_light_brightness: columns.push("1fr"); } if (entity.attributes.supported_color_modes.some(r => color_modes.includes(r))) { - columns.push("2fr"); + columns.push("1fr"); } return columns.join(" "); ]]] From 75efa287261ea57274a5706e922a6de4cbd75f72 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 18:11:53 +0200 Subject: [PATCH 14/39] Update popup_weather_forecast.yaml - Fix mobile padding issue --- .../popup_templates/popups/popup_weather_forecast.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_forecast.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_forecast.yaml index ce86857a8..6b74b7351 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_forecast.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_forecast.yaml @@ -37,7 +37,7 @@ popup_weather_forecast: @media (max-width: 800px) { #container { grid-template-areas: "header" "content1" "buttons" "footer" !important; - grid-template-rows: 14vh 56vh 13vh 13vh !important; + grid-template-rows: 10vh 56vh 13vh 13vh !important; grid-template-columns: 1fr !important; } #buttons { From 10a21450faa72625f8c6a5802fd98297f75138b9 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 18:12:13 +0200 Subject: [PATCH 15/39] Update popup_weather_radar.yaml - Fix mobile padding issue --- .../popup_templates/popups/popup_weather_radar.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_radar.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_radar.yaml index 76f5dad41..c5e4131a4 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_radar.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_radar.yaml @@ -15,7 +15,7 @@ popup_weather_radar: @media (max-width: 800px) { #container { grid-template-areas: "header" "content2" "buttons" "footer" !important; - grid-template-rows: 14vh 56vh 13vh 13vh !important; + grid-template-rows: 10vh 56vh 13vh 13vh !important; grid-template-columns: 1fr !important; } #buttons { From e089a7de2a54749f50e0a61a12548817bef942ab Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Sun, 11 Sep 2022 18:13:43 +0200 Subject: [PATCH 16/39] Update popup_weather.yaml - Removed unnecessary styles. --- .../popup_templates/popups/popup_weather.yaml | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather.yaml index 3e75efcc1..8d0590f44 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather.yaml @@ -6,24 +6,6 @@ popup_weather: service: "browser_mod.popup" data: hide_header: true - style: | - --popup-background-color: var(--primary-background-color); - --popup-border-radius: 20px; - --popup-padding-x: 24px; - --popup-padding-y: 20px; - --popup-max-width: auto - --popup-min-width: 800px; - card_mod: - style: - ha-dialog$: | - @media (max-width: 800px){ - div.mdc-dialog__container { - --mdc-dialog-min-width: 100vw; - --mdc-dialog-max-width: 100vw; - --mdc-dialog-min-height: 100%; - --ha-dialog-border-radius: 0px; - } - } content: type: "custom:button-card" template: "popup_weather_forecast" From 4a014b5f1ba5cfe52692d23b73b540e2767a7c30 Mon Sep 17 00:00:00 2001 From: lkmgr <7467162+lkmgr@users.noreply.github.com> Date: Sun, 11 Sep 2022 23:40:47 +0200 Subject: [PATCH 17/39] Fix syntax error for name tap action --- .../lovelace/ulm_templates/actions/actions_name.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_name.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_name.yaml index dfacb70e8..7cb71aae7 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_name.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_name.yaml @@ -63,7 +63,6 @@ ulm_actions_name: 'entity_id': entity.entity_id }; } - } return variables.ulm_name_tap_service_data; ]]] browser_mod: From e74817fb4309fe9cb98e314cfd12ea1548e469d5 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Mon, 12 Sep 2022 15:55:44 +0200 Subject: [PATCH 18/39] Update card_media_player.yaml - Removed background-blend-mode: "multiply" that causes issues for Safari MacOS/iOS/iPadOS and the iOS/iPadOS companion app. --- .../ulm_templates/card_templates/cards/card_media_player.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml index 561d7f8ed..66b3a06ec 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_media_player.yaml @@ -55,7 +55,6 @@ card_media_player: - border-radius: "var(--border-radius)" - box-shadow: "var(--box-shadow)" - padding: "12px" - - background-blend-mode: "multiply" - background: | [[[ return variables.ulm_card_media_player_enable_art && states[entity.entity_id].attributes.entity_picture != null From e902ef399c588696b45b4508cd47ff9db53ce3df Mon Sep 17 00:00:00 2001 From: Polle Vanhoof Date: Mon, 12 Sep 2022 16:33:13 +0200 Subject: [PATCH 19/39] Remove 2 zone limitation from person card --- .../card_templates/cards/card_person.yaml | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_person.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_person.yaml index 47da16c65..cc042530a 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_person.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_person.yaml @@ -7,8 +7,6 @@ card_person: variables: ulm_card_person_use_entity_picture: false ulm_card_person_icon: "mdi:face-man" - ulm_card_person_zone1: "" - ulm_card_person_zone2: "" ulm_address: "" triggers_update: "all" tap_action: @@ -61,17 +59,17 @@ card_person: custom_fields: notification: > [[[ - if (states[variables.ulm_card_person_entity].state !== 'home') { - if (states[variables.ulm_card_person_zone1]?.attributes?.persons.includes(variables.ulm_card_person_entity)) { - var icon = states[variables.ulm_card_person_zone1].attributes.icon !== null ? states[variables.ulm_card_person_zone1].attributes.icon : 'mdi:help-circle' - return ''; - } else if (states[variables.ulm_card_person_zone2]?.attributes?.persons.includes(variables.ulm_card_person_entity)) { - var icon = states[variables.ulm_card_person_zone2].attributes.icon !== null ? states[variables.ulm_card_person_zone2].attributes.icon : 'mdi:help-circle' - return ''; - } else { - return ''; - } + if (states[variables.ulm_card_person_entity].state == 'home') { + return ''; } else { - return ''; + for (let st in states) { + if (st.startsWith("zone.")) { + if (states[st]?.attributes?.persons.includes(variables.ulm_card_person_entity)) { + var icon = states[st].attributes.icon !== null ? states[st].attributes.icon : 'mdi:help-circle'; + return ''; + } + } + } } + return ''; ]]] From 0a19df17ba90266f4d21f20a7748e8e0c53c8c19 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Tue, 13 Sep 2022 13:48:52 +0200 Subject: [PATCH 20/39] Update icon_more_info_new.yaml - Added overflow: "visible", this will prevent name cutoff when using a horizontal-stack with 3 cards. --- .../card_templates/internal_templates/icon_more_info_new.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_new.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_new.yaml index c6f799ea8..3c8ea4d53 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_new.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_new.yaml @@ -91,6 +91,7 @@ icon_more_info_new: ulm_custom_popup: "[[[ return variables.ulm_custom_popup; ]]]" styles: card: + - overflow: "visible" - padding: "6px" - margin-left: "-6px" - background-color: "rgba(0,0,0,0)" From 593b96af83cf2e880d683c347c5d5a0f2d35b64c Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Tue, 13 Sep 2022 13:52:36 +0200 Subject: [PATCH 21/39] Update popup_light_brightness.yaml - Fix alignments for brightness/warmth/color buttons --- .../popup_templates/popups/popup_light_brightness.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml index 1827d150e..2123bac61 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml @@ -94,7 +94,6 @@ popup_light_brightness: #buttons { display: block !important; align-self: start !important; - margin-left: 14px; } #content2 { display: none !important; @@ -221,6 +220,14 @@ popup_light_brightness: card: - background: "none" - overflow: "visible" + - margin-left: > + [[[ + var color_temp_modes = ["color_temp"]; + if (entity.attributes.supported_color_modes.some(r => color_temp_modes.includes(r))) { + return "0px"; + } + return "6px"; + ]]] grid: - grid-template-areas: > [[[ From fea0ee1c95eb43c4266008d6e1d2df359f141dcf Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Tue, 13 Sep 2022 13:54:15 +0200 Subject: [PATCH 22/39] Update popup_light_color.yaml - Fix alignments for brightness/warmth/color buttons --- .../popup_templates/popups/popup_light_color.yaml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color.yaml index 9a4b646a8..ae500503a 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color.yaml @@ -24,7 +24,6 @@ popup_light_color: #buttons { display: block !important; align-self: start !important; - margin-left: 14px; } #content1 { display: none; @@ -40,6 +39,15 @@ popup_light_color: styles: card: - background: "none" + - overflow: "visible" + - margin-left: > + [[[ + var color_temp_modes = ["color_temp"]; + if (entity.attributes.supported_color_modes.some(r => color_temp_modes.includes(r))) { + return "0px"; + } + return "6px"; + ]]] custom_fields: item1: card: From 40d11c19ac7241eaebbb64e1eac7e97f996d36d1 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Tue, 13 Sep 2022 13:55:32 +0200 Subject: [PATCH 23/39] Update popup_light_color_temp.yaml --- .../popup_templates/popups/popup_light_color_temp.yaml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml index 7c166759a..2fa9d2ef0 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml @@ -24,7 +24,6 @@ popup_light_color_temp: #buttons { display: block !important; align-self: start !important; - margin-left: 14px; } #content1 { display: none; @@ -40,6 +39,15 @@ popup_light_color_temp: styles: card: - background: "none" + - overflow: "visible" + - margin-left: > + [[[ + var color_temp_modes = ["color_temp"]; + if (entity.attributes.supported_color_modes.some(r => color_temp_modes.includes(r))) { + return "0px"; + } + return "6px"; + ]]] custom_fields: item1: card: From 75c3718fc2eed9a950b8430f860d539bd6b0a8f8 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Tue, 13 Sep 2022 14:00:11 +0200 Subject: [PATCH 24/39] Create popup_cover.yaml - New popup for cover card. --- .../popup_templates/popups/popup_cover.yaml | 189 ++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml new file mode 100644 index 000000000..f4fbd774e --- /dev/null +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml @@ -0,0 +1,189 @@ +--- +popup_cover: + show_icon: false + show_name: false + show_label: false + show_units: false + styles: + grid: + - grid-template-areas: "'header' 'content1' 'footer'" + - grid-template-rows: "16vh 56vh 14vh" + - grid-template-columns: "1fr" + - column-gap: "30px" + card: + - background: "var(--primary-background-color)" + - box-shadow: "none" + - padding: "0%" + custom_fields: + header: + - align-self: "center" + - margin-bottom: "4px" + content1: + - align-self: "center" + - margin-top: "-6px" + buttons: + - display: "none" + footer: + - align-self: "absolute" + - margin-top: "12px" + extra_styles: | + @media (max-width: 800px) { + #container { + grid-template-areas: "header" "content1" "buttons" "footer" !important; + grid-template-rows: 16vh 52vh 14vh 14vh !important; + grid-template-columns: 1fr !important; + } + #buttons { + display: block !important; + align-self: start !important; + } + #content2 { + display: none !important; + } + } + custom_fields: + header: + card: + type: "custom:button-card" + entity: "[[[ return entity.entity_id ]]]" + template: "popup_header_cover" + content1: + card: + type: "custom:my-slider-v2" + entity: "[[[ return entity.entity_id ]]]" + allowTapping: true + vertical: true + flipped: true + styles: + card: + - height: "280px" + - width: "100px" + - box-shadow: "none" + - background: "none" + container: + - border: 2px solid white + - border-radius: "14px" + - Height: "280px" + - width: "100px" + - box-shadow: "none" + progress: + - background: "rgba(var(--color-theme),0.9)" + track: + - background: "rgba(var(--color-theme),0.09)" + thumb: + - width: "40px" + - height: "5px" + - background: "white" + - position: "center" + - margin-right: "30px" + - margin-left: "30px" + - border-radius: "0px 0px 10px 10px" + card_mod: + style: + .: | + :host { + display: flex; + justify-content: center; + align-items: center; + background: none; + } + buttons: + card: + type: "custom:button-card" + template: "list_3_items" + styles: + card: + - background: "none" + custom_fields: + item1: + card: + icon: "mdi:arrow-down" + type: "custom:button-card" + entity: "[[[ return entity.entity_id ]]]" + name: "Sluiten" + template: + - "popup_button" + - "popup_button_close" + tap_action: + action: "call-service" + service: "cover.close_cover" + service_data: + entity_id: "[[[ return entity.entity_id ]]]" + item2: + card: + icon: "mdi:stop" + type: "custom:button-card" + entity: "[[[ return entity.entity_id ]]]" + name: "Stop" + template: + - "popup_button" + tap_action: + action: "call-service" + service: "cover.stop_cover" + service_data: + entity_id: "[[[ return entity.entity_id ]]]" + item3: + card: + icon: "mdi:arrow-up" + type: "custom:button-card" + entity: "[[[ return entity.entity_id ]]]" + name: "Openen" + template: + - "popup_button" + - "popup_button_open" + tap_action: + action: "call-service" + service: "cover.open_cover" + service_data: + entity_id: "[[[ return entity.entity_id ]]]" + footer: + card: + type: "custom:button-card" + template: "popup_list_items" + custom_fields: + item1: + card: + type: "custom:button-card" + template: "popup_button_back" + entity: "[[[ return entity.entity_id ]]]" + item2: + card: + type: "custom:button-card" + template: "popup_button_power" + entity: "[[[ return entity.entity_id ]]]" + +popup_button_open: + styles: + img_cell: + - background-color: > + [[[ + if (entity.state === "closing"){ + return "rgba(var(--color-theme),0.2)" + } + if (entity.state === "opening"){ + return "rgba(var(--color-theme),0.2)" + } + if (entity.attributes.current_position == "100"){ + return "rgba(var(--color-theme),0.2)" + } else { + return "var(--card-background-color)" + } + ]]] + +popup_button_close: + styles: + img_cell: + - background-color: > + [[[ + if (entity.state === "closing"){ + return "rgba(var(--color-theme),0.2)" + } + if (entity.state === "opening"){ + return "rgba(var(--color-theme),0.2)" + } + if (entity.attributes.current_position == "100"){ + return "var(--card-background-color)" + } else { + return "var(--card-background-color)" + } + ]]] From b83d99d171e890e75357c75ecc7ceafd23630e84 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Tue, 13 Sep 2022 14:16:37 +0200 Subject: [PATCH 25/39] Update popup_cover.yaml - Fix double quotes (quoted-strings) --- .../ulm_templates/popup_templates/popups/popup_cover.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml index f4fbd774e..2bb874e19 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml @@ -61,7 +61,7 @@ popup_cover: - box-shadow: "none" - background: "none" container: - - border: 2px solid white + - border: "2px solid white" - border-radius: "14px" - Height: "280px" - width: "100px" From 9d9398d1753dc79dc16b19572daee5553731a0fe Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Tue, 13 Sep 2022 16:43:00 +0200 Subject: [PATCH 26/39] Update actions_icon.yaml - Fix naming for cover popup --- .../lovelace/ulm_templates/actions/actions_icon.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_icon.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_icon.yaml index 29eebdfb6..e4832e43d 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_icon.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_icon.yaml @@ -254,7 +254,7 @@ ulm_actions_icon: if (domain == "media_player" && action == 'toggle'){ action = 'call-service'; } - if (action == 'popup' && (variables.ulm_card_light_enable_popup || variables.ulm_card_media_player_enable_popup || variables.ulm_card_thermostat_enable_popup || variables.ulm_card_cover_screens_enable_popup)){ + if (action == 'popup' && (variables.ulm_card_light_enable_popup || variables.ulm_card_media_player_enable_popup || variables.ulm_card_thermostat_enable_popup || variables.ulm_card_cover_enable_popup)){ action = 'fire-dom-event' } From 5a1147aa9bb376d6438435588044d57511e46b43 Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Tue, 13 Sep 2022 16:44:46 +0200 Subject: [PATCH 27/39] Update card_cover.yaml - Added support for the new cover popup. --- .../ulm_templates/card_templates/cards/card_cover.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml index 4c355ec54..e5b816291 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml @@ -89,6 +89,16 @@ card_cover: card: type: "custom:button-card" entity: "[[[ return entity.entity_id ]]]" + variables: > + [[[ + let vars = variables; + if(variables.ulm_card_cover_enable_popup) { + vars.ulm_custom_popup = { + 'template': 'popup_cover' + }; + } + return vars; + ]]] icon: | [[[ var icon = "mdi:help-circle"; From 5e0fc87261c557b1de1d63bf0eade2a665afc8af Mon Sep 17 00:00:00 2001 From: Andy <67138158+AndyVRD@users.noreply.github.com> Date: Tue, 13 Sep 2022 16:49:31 +0200 Subject: [PATCH 28/39] Update card_cover.yaml - Changed window-shutter icons to roller-shade. --- .../ulm_templates/card_templates/cards/card_cover.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml index e5b816291..e23ca9147 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml @@ -111,7 +111,7 @@ card_cover: } else if (variables.ulm_card_cover_gate){ var icon = "mdi:gate"; } else - var icon = "mdi:window-shutter"; + var icon = "mdi:roller-shade-closed"; } else if (variables.ulm_card_curtain_display_collapse_expand){ var icon = "mdi:curtains"; @@ -120,7 +120,7 @@ card_cover: } else if (variables.ulm_card_cover_gate){ var icon = "mdi:gate-open"; }else - var icon = "mdi:window-shutter-open"; + var icon = "mdi:roller-shade"; } else { if (states[entity.entity_id].attributes.current_position == 0){ if (variables.ulm_card_curtain_display_collapse_expand){ @@ -130,7 +130,7 @@ card_cover: } else if(variables.ulm_card_cover_gate){ var icon = "mdi:gate"; } else - var icon = "mdi:window-shutter"; + var icon = "mdi:roller-shade-closed"; } else if (variables.ulm_card_curtain_display_collapse_expand){ var icon = "mdi:curtains"; @@ -140,7 +140,7 @@ card_cover: var icon = "mdi:gate-open"; } else - var icon = "mdi:window-shutter-open"; + var icon = "mdi:roller-shade"; } return icon ; ]]] From 404b6b6a8010d26c95e4cf167a62d18e75d07b16 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Wed, 14 Sep 2022 11:52:37 +0200 Subject: [PATCH 29/39] Fix overflow to edge of card --- .../internal_templates/icon_more_info_new.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_new.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_new.yaml index 3c8ea4d53..9b79addc1 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_new.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/icon_more_info_new.yaml @@ -59,9 +59,6 @@ icon_more_info_new: ulm_icon_double_tap_service: "[[[ return variables.ulm_icon_double_tap_service; ]]]" ulm_icon_double_tap_service_data: "[[[ return variables.ulm_icon_double_tap_service_data]]]" ulm_custom_popup: "[[[ return variables.ulm_custom_popup; ]]]" - styles: - card: - - overflow: "visible" item2: card: type: "custom:button-card" @@ -95,6 +92,10 @@ icon_more_info_new: - padding: "6px" - margin-left: "-6px" - background-color: "rgba(0,0,0,0)" + label: + - overflow: "visible" + name: + - overflow: "visible" custom_fields: notification: - display: "none" From c72f1dd7287313cff8e8c259808833fc699e9d50 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Wed, 14 Sep 2022 11:54:58 +0200 Subject: [PATCH 30/39] Add translation engine to cover popup --- .../lovelace/translations/default.yaml | 3 + .../card_templates/cards/card_cover.yaml | 10 +++ .../popup_button_cover_close.yaml | 7 ++ .../popup_button_cover_open.yaml | 7 ++ .../popup_button_cover_stop.yaml | 7 ++ .../popup_templates/popups/popup_cover.yaml | 75 +++++++++---------- 6 files changed, 69 insertions(+), 40 deletions(-) create mode 100644 custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_close.yaml create mode 100644 custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_open.yaml create mode 100644 custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_stop.yaml diff --git a/custom_components/ui_lovelace_minimalist/lovelace/translations/default.yaml b/custom_components/ui_lovelace_minimalist/lovelace/translations/default.yaml index fc7cfaeb8..f201de847 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/translations/default.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/translations/default.yaml @@ -8,6 +8,9 @@ ulm_translation_engine: ulm_translation_scenes: "[[[ return hass.resources[hass['language']]['ui.dialogs.quick-bar.commands.reload.scene']; ]]]" ulm_translation_source: "[[[ return hass.resources[hass['language']]['ui.card.media_player.source']; ]]]" ulm_translation_history: "[[[ return hass.resources[hass['language']]['ui.dialogs.more_info_control.history']; ]]]" + ulm_translation_close_cover: "[[[ return hass.resources[hass['language']]['ui.dialogs.more_info_control.cover.close_cover']; ]]]" + ulm_translation_stop_cover: "[[[ return hass.resources[hass['language']]['ui.dialogs.more_info_control.cover.stop_cover']; ]]]" + ulm_translation_open_cover: "[[[ return hass.resources[hass['language']]['ui.dialogs.more_info_control.cover.open_cover']; ]]]" ulm_translation_hour: > [[[ var number = hass.resources[hass['language']]["ui.duration.hour"]; diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml index e23ca9147..dbaed951f 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml @@ -181,6 +181,16 @@ card_cover: card: type: "custom:button-card" entity: "[[[ return entity.entity_id ]]]" + variables: > + [[[ + let vars = variables; + if(variables.ulm_card_cover_enable_popup) { + vars.ulm_custom_popup = { + 'template': 'popup_cover' + }; + } + return vars; + ]]] name: "[[[ return variables.ulm_card_cover_name ]]]" label: >- [[[ diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_close.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_close.yaml new file mode 100644 index 000000000..37bd1cd81 --- /dev/null +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_close.yaml @@ -0,0 +1,7 @@ +--- +popup_button_cover_close: + template: "ulm_translation_engine" + name: "[[[ return variables.ulm_translation_close_cover; ]]]" + styles: + card: + - overflow: "visible" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_open.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_open.yaml new file mode 100644 index 000000000..e102a0972 --- /dev/null +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_open.yaml @@ -0,0 +1,7 @@ +--- +popup_button_cover_open: + template: "ulm_translation_engine" + name: "[[[ return variables.ulm_translation_open_cover; ]]]" + styles: + card: + - overflow: "visible" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_stop.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_stop.yaml new file mode 100644 index 000000000..4e308a8f8 --- /dev/null +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_stop.yaml @@ -0,0 +1,7 @@ +--- +popup_button_cover_stop: + template: "ulm_translation_engine" + name: "[[[ return variables.ulm_translation_stop_cover; ]]]" + styles: + card: + - overflow: "visible" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml index 2bb874e19..0e6db6ea4 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml @@ -100,10 +100,25 @@ popup_cover: icon: "mdi:arrow-down" type: "custom:button-card" entity: "[[[ return entity.entity_id ]]]" - name: "Sluiten" template: - "popup_button" - - "popup_button_close" + - "popup_button_cover_close" + styles: + img_cell: + - background-color: > + [[[ + if (entity.state === "closing"){ + return "rgba(var(--color-theme),0.2)" + } + if (entity.state === "opening"){ + return "rgba(var(--color-theme),0.2)" + } + if (entity.attributes.current_position == "100"){ + return "var(--card-background-color)" + } else { + return "var(--card-background-color)" + } + ]]] tap_action: action: "call-service" service: "cover.close_cover" @@ -114,9 +129,9 @@ popup_cover: icon: "mdi:stop" type: "custom:button-card" entity: "[[[ return entity.entity_id ]]]" - name: "Stop" template: - "popup_button" + - "popup_button_cover_stop" tap_action: action: "call-service" service: "cover.stop_cover" @@ -130,7 +145,23 @@ popup_cover: name: "Openen" template: - "popup_button" - - "popup_button_open" + - "popup_button_cover_open" + styles: + img_cell: + - background-color: > + [[[ + if (entity.state === "closing"){ + return "rgba(var(--color-theme),0.2)" + } + if (entity.state === "opening"){ + return "rgba(var(--color-theme),0.2)" + } + if (entity.attributes.current_position == "100"){ + return "rgba(var(--color-theme),0.2)" + } else { + return "var(--card-background-color)" + } + ]]] tap_action: action: "call-service" service: "cover.open_cover" @@ -151,39 +182,3 @@ popup_cover: type: "custom:button-card" template: "popup_button_power" entity: "[[[ return entity.entity_id ]]]" - -popup_button_open: - styles: - img_cell: - - background-color: > - [[[ - if (entity.state === "closing"){ - return "rgba(var(--color-theme),0.2)" - } - if (entity.state === "opening"){ - return "rgba(var(--color-theme),0.2)" - } - if (entity.attributes.current_position == "100"){ - return "rgba(var(--color-theme),0.2)" - } else { - return "var(--card-background-color)" - } - ]]] - -popup_button_close: - styles: - img_cell: - - background-color: > - [[[ - if (entity.state === "closing"){ - return "rgba(var(--color-theme),0.2)" - } - if (entity.state === "opening"){ - return "rgba(var(--color-theme),0.2)" - } - if (entity.attributes.current_position == "100"){ - return "var(--card-background-color)" - } else { - return "var(--card-background-color)" - } - ]]] From 4759e1817328edc677ecf0b581a56a02c0da2df4 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Wed, 14 Sep 2022 12:17:27 +0200 Subject: [PATCH 31/39] small fix --- .../ulm_templates/popup_templates/popups/popup_cover.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml index 0e6db6ea4..0d0d22e14 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml @@ -142,7 +142,6 @@ popup_cover: icon: "mdi:arrow-up" type: "custom:button-card" entity: "[[[ return entity.entity_id ]]]" - name: "Openen" template: - "popup_button" - "popup_button_cover_open" From 3fccbbe247a913716de23873201735ad3b458da7 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Wed, 14 Sep 2022 14:23:37 +0200 Subject: [PATCH 32/39] Add word-break to vertical popup buttons --- .../popup_templates/popup_buttons/popup_button.yaml | 5 +++-- .../popups/popup_light_brightness.yaml | 11 +++++++++-- .../popups/popup_light_color_temp.yaml | 10 ++++++++++ .../popups/popup_power_outlet_history.yaml | 2 ++ .../popups/popup_power_outlet_stats.yaml | 2 ++ .../popups/popup_weather_forecast.yaml | 2 ++ .../popup_templates/popups/popup_weather_radar.yaml | 2 ++ 7 files changed, 30 insertions(+), 4 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button.yaml index 3e7759903..1cf654624 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button.yaml @@ -13,7 +13,6 @@ popup_button: - box-shadow: "none" - border-radius: "none" - padding: "12px" - - overflow: "visible" icon: - color: "var(--primary-color)" img_cell: @@ -28,4 +27,6 @@ popup_button: - font-weight: "bold" - font-size: "14px" - margin-top: "12px" - - overflow: "visible" + - white-space: "initial" + - text-overflow: "initial" + - overflow: "initial" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml index e40796452..3dfe8e056 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_brightness.yaml @@ -218,8 +218,16 @@ popup_light_brightness: styles: card: - background: "none" - - overflow: "visible" + - margin-left: > + [[[ + var color_temp_modes = ["color_temp"]; + if (entity.attributes.supported_color_modes.some(r => color_temp_modes.includes(r))) { + return "0px"; + } + return "6px"; + ]]] grid: + - align-items: "initial" - grid-template-areas: > [[[ var areas = []; @@ -272,7 +280,6 @@ popup_light_brightness: - "popup_button_color_temp" styles: card: - - overflow: "visible" - display: > [[[ var color_temp_modes = ["color_temp"]; diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml index c21cd5da0..76dfda8e6 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_light_color_temp.yaml @@ -37,8 +37,18 @@ popup_light_color_temp: type: "custom:button-card" template: "list_3_items" styles: + grid: + - align-items: "initial" card: - background: "none" + - margin-left: > + [[[ + var color_temp_modes = ["color_temp"]; + if (entity.attributes.supported_color_modes.some(r => color_temp_modes.includes(r))) { + return "0px"; + } + return "6px"; + ]]] custom_fields: item1: card: diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_power_outlet_history.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_power_outlet_history.yaml index fcf648b6e..4803c81cf 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_power_outlet_history.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_power_outlet_history.yaml @@ -34,6 +34,8 @@ popup_power_outlet_history: styles: card: - background: "none" + grid: + - align-items: "initial" custom_fields: item1: card: diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_power_outlet_stats.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_power_outlet_stats.yaml index 799bd0469..22cb15a87 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_power_outlet_stats.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_power_outlet_stats.yaml @@ -112,6 +112,8 @@ popup_power_outlet_stats: styles: card: - background: "none" + grid: + - align-items: "initial" custom_fields: item1: card: diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_forecast.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_forecast.yaml index ce86857a8..c82e93c24 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_forecast.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_forecast.yaml @@ -172,6 +172,8 @@ popup_weather_forecast: styles: card: - background: "none" + grid: + - align-items: "initial" custom_fields: item1: card: diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_radar.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_radar.yaml index 76f5dad41..bbd634d24 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_radar.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_radar.yaml @@ -33,6 +33,8 @@ popup_weather_radar: styles: card: - background: "none" + grid: + - align-items: "initial" custom_fields: item1: card: From 8fa3ee2c83a5a41845a3017d8c75da04a06e54e4 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Wed, 14 Sep 2022 14:28:08 +0200 Subject: [PATCH 33/39] Split up cover popup files and add translations --- .../popup_buttons/popup_button_cover_close.yaml | 3 --- .../popup_templates/popup_buttons/popup_button_cover_open.yaml | 3 --- .../popup_templates/popup_buttons/popup_button_cover_stop.yaml | 3 --- .../ulm_templates/popup_templates/popups/popup_cover.yaml | 2 ++ 4 files changed, 2 insertions(+), 9 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_close.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_close.yaml index 37bd1cd81..d2e6b8649 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_close.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_close.yaml @@ -2,6 +2,3 @@ popup_button_cover_close: template: "ulm_translation_engine" name: "[[[ return variables.ulm_translation_close_cover; ]]]" - styles: - card: - - overflow: "visible" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_open.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_open.yaml index e102a0972..eb0d6f20b 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_open.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_open.yaml @@ -2,6 +2,3 @@ popup_button_cover_open: template: "ulm_translation_engine" name: "[[[ return variables.ulm_translation_open_cover; ]]]" - styles: - card: - - overflow: "visible" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_stop.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_stop.yaml index 4e308a8f8..a9e7cbd3d 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_stop.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popup_buttons/popup_button_cover_stop.yaml @@ -2,6 +2,3 @@ popup_button_cover_stop: template: "ulm_translation_engine" name: "[[[ return variables.ulm_translation_stop_cover; ]]]" - styles: - card: - - overflow: "visible" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml index 0d0d22e14..5b26a7602 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_cover.yaml @@ -94,6 +94,8 @@ popup_cover: styles: card: - background: "none" + grid: + - align-items: "initial" custom_fields: item1: card: From f70449bdb21df95456d20186336ef9552deaf801 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Wed, 14 Sep 2022 17:55:41 +0200 Subject: [PATCH 34/39] Dynamic coloring buttons on position --- .../card_templates/cards/card_cover.yaml | 46 +++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml index dbaed951f..4a3681555 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_cover.yaml @@ -221,7 +221,27 @@ card_cover: type: "custom:button-card" template: "widget_icon" state: - - value: "closed" + - operator: "template" + value: > + [[[ + return entity.attributes.current_position == "0"; + ]]] + styles: + icon: + - color: "rgba(var(--color-theme),0.4)" + - operator: "template" + value: > + [[[ + return entity.state == "closing"; + ]]] + styles: + icon: + - color: "rgba(var(--color-theme),0.4)" + - operator: "template" + value: > + [[[ + return entity.state == "opening"; + ]]] styles: icon: - color: "rgba(var(--color-theme),0.4)" @@ -249,13 +269,33 @@ card_cover: service: "cover.stop_cover" service_data: entity_id: "[[[ return entity.entity_id ]]]" - icon: "mdi:pause" + icon: "mdi:stop" item3: card: type: "custom:button-card" template: "widget_icon" state: - - value: "open" + - operator: "template" + value: > + [[[ + return entity.attributes.current_position == "100"; + ]]] + styles: + icon: + - color: "rgba(var(--color-theme),0.4)" + - operator: "template" + value: > + [[[ + return entity.state == "closing"; + ]]] + styles: + icon: + - color: "rgba(var(--color-theme),0.4)" + - operator: "template" + value: > + [[[ + return entity.state == "opening"; + ]]] styles: icon: - color: "rgba(var(--color-theme),0.4)" From 30205bbf71fde8512e4af41cf5d0958a4dac282f Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Fri, 16 Sep 2022 12:31:56 +0200 Subject: [PATCH 35/39] Add ETA and Battery Info --- .../card_templates/cards/card_person.yaml | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_person.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_person.yaml index cc042530a..983a4c882 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_person.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_person.yaml @@ -16,19 +16,23 @@ card_person: show_name: true label: > [[[ + var eta = "" + if (variables.ulm_card_person_eta && states[variables.ulm_card_person_entity].state != 'home'){ + eta = " | " + states[variables.ulm_card_person_eta].state + " "+states[variables.ulm_card_person_eta].attributes.unit_of_measurement; + } if (variables.ulm_address){ - return states[variables.ulm_address].state - } else { - let state = states[variables.ulm_card_person_entity].state; - let option = ["home", "not_home", "unavailable", "unknown"] - return (option.includes(state)) ? variables.ulm_translation_state : (states["zone."+state]?.attributes?.friendly_name || state) + return states[variables.ulm_address].state + eta } + let state = states[variables.ulm_card_person_entity].state; + let option = ["home", "not_home", "unavailable", "unknown"] + return (option.includes(state)) ? variables.ulm_translation_state + eta : state + eta ]]] name: "[[[ return states[variables.ulm_card_person_entity].attributes.friendly_name ]]]" entity: "[[[ return variables.ulm_card_person_entity; ]]]" icon: "[[[ return variables.ulm_card_person_icon; ]]]" show_entity_picture: "[[[ return variables.ulm_card_person_use_entity_picture ]]]" - entity_picture: "[[[ return variables.ulm_card_person_use_entity_picture ? states[variables.ulm_card_person_entity].attributes.entity_picture\ + entity_picture: + "[[[ return variables.ulm_card_person_use_entity_picture ? states[variables.ulm_card_person_entity].attributes.entity_picture\ \ : null ]]]" styles: icon: @@ -56,6 +60,12 @@ card_person: [[[ return (states[variables.ulm_card_person_entity].state !== 'home') ? "rgba(var(--color-green),1)" : "rgba(var(--color-blue),1)"; ]]] + info: + - position: "absolute" + - right: "6px" + - top: "6px" + - width: "25px" + - height: "25px" custom_fields: notification: > [[[ @@ -73,3 +83,18 @@ card_person: } return ''; ]]] + info: | + [[[ + if(variables.ulm_card_person_battery){ + const battery = Math.round(states[variables.ulm_card_person_battery].state/1); + const radius = 20.5; const circumference = radius * 2 * Math.PI; + return ` + + ${battery}%`; + } + ]]] From 68b3cbb9bc24fa97a2eed794c1f2d3bc2acaea6c Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Fri, 16 Sep 2022 12:38:06 +0200 Subject: [PATCH 36/39] Add documentation --- docs/usage/cards/card_person.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/usage/cards/card_person.md b/docs/usage/cards/card_person.md index f70726ad1..df3d6ae77 100644 --- a/docs/usage/cards/card_person.md +++ b/docs/usage/cards/card_person.md @@ -19,8 +19,8 @@ The `card_person` shows if a person is `home` or `not_home`. If you have setup o | ulm_card_person_entity | | :material-check: | The person entity | | ulm_card_person_use_entity_picture | | :material-close: | If you set this to true, the card shows the entity picture from your user, otherwise (set to false) shows the icon. Default is false. | | ulm_card_person_icon | mdi:face-man | :material-close: | Sets the icon to display if entity picture not shown. | -| ulm_card_person_zone1 | | :material-close: | Set another zone (beside "home") to use for the card. You can set up two zones besides "home". | -| ulm_card_person_zone2 | | :material-close: | Set another zone (beside "home") to use for the card. You can set up two zones besides "home". | +| ulm_card_person_battery | | :material-close: | Battery sensor shown in the upper right corner | +| ulm_card_person_eta | | :material-close: | Sensor with ETA info from integrations like: [Waze](https://www.home-assistant.io/integrations/waze_travel_time/), [Google](https://www.home-assistant.io/integrations/google_travel_time/) and [HERE](https://www.home-assistant.io/integrations/here_travel_time/) | | ulm_address | | :material-close: | Show an address as label, add an entity with a geo location | ## Usage @@ -33,8 +33,8 @@ The `card_person` shows if a person is `home` or `not_home`. If you have setup o ulm_card_person_entity: person.username ulm_card_person_use_entity_picture: true ulm_card_person_icon: mdi:face-woman - ulm_card_person_zone1: zone.work - ulm_card_person_zone2: zone.school + ulm_card_person_battery: sensor.battery_iphone + ulm_card_person_eta: sensor.waze_travel_time_person ulm_address: sensor.s10_mike_gegeocodeerde_locatie ``` From 937f710b9cc4693657278630cd5f0820d6df8648 Mon Sep 17 00:00:00 2001 From: basbruss <68892092+basbruss@users.noreply.github.com> Date: Fri, 16 Sep 2022 12:49:52 +0200 Subject: [PATCH 37/39] add documentation --- docs/assets/img/popup_cover.png | Bin 0 -> 125759 bytes docs/usage/popups/popup_cover.md | 37 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 docs/assets/img/popup_cover.png create mode 100644 docs/usage/popups/popup_cover.md diff --git a/docs/assets/img/popup_cover.png b/docs/assets/img/popup_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..39b316c55eeb868381864705fe9ce84c889fd874 GIT binary patch literal 125759 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 literal 0 HcmV?d00001 diff --git a/docs/usage/popups/popup_cover.md b/docs/usage/popups/popup_cover.md new file mode 100644 index 000000000..9075f8859 --- /dev/null +++ b/docs/usage/popups/popup_cover.md @@ -0,0 +1,37 @@ +--- +title: Cover Popup +hide: + - toc +--- + + +### Thermostat popup + +![Phone](../../assets/img/popup_cover.png){ width="500" } + +##### Card compatibility + +This popup is displayed using ``popup`` and it is compatible with the following cards/chips : + +- card_cover + +##### How to use + +To enable this popup, add the variable ``ulm_card_cover_enable_popup`` and set to ``true``. + +!!! warning + This is a different approach as the other `popup_cards` use. + +For example : + +```yaml +- type: "custom:button-card" + template: card_cover + entity: climate.garage + variables: + ulm_card_cover_enable_popup: true +``` + +## Credits + +- Designed by AndyVRD From 2033c67374a18c1ce9ee9365d2449c9b7c12cb78 Mon Sep 17 00:00:00 2001 From: panhans Date: Fri, 16 Sep 2022 14:58:45 +0200 Subject: [PATCH 38/39] Add group by property --- .../ulm_templates/card_templates/2-line_cards/card_graph.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/2-line_cards/card_graph.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/2-line_cards/card_graph.yaml index 5ecfd6e63..f8b5acd8e 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/2-line_cards/card_graph.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/2-line_cards/card_graph.yaml @@ -12,6 +12,7 @@ card_graph: ulm_card_graph_hours: 24 ulm_card_graph_type: "fill" ulm_card_graph_points: "0.5" + ulm_card_graph_group_by: "interval" triggers_update: "all" custom_fields: item1: @@ -51,6 +52,7 @@ card_graph: fill: "[[[ return variables.ulm_card_graph_type=='fill'?true:false; ]]]" hours_to_show: "[[[ return variables.ulm_card_graph_hours; ]]]" points_per_hour: "[[[ return variables.ulm_card_graph_points; ]]]" + group_by: "[[[ return variables.ulm_card_graph_group_by; ]]]" style: | ha-card { box-shadow: none; From 6f0044cf284022490c55660c510759598cf00ae5 Mon Sep 17 00:00:00 2001 From: panhans Date: Fri, 16 Sep 2022 15:02:04 +0200 Subject: [PATCH 39/39] ADD: Update docs --- docs/usage/cards/card_graph.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/usage/cards/card_graph.md b/docs/usage/cards/card_graph.md index 30d524a98..f3658f64b 100644 --- a/docs/usage/cards/card_graph.md +++ b/docs/usage/cards/card_graph.md @@ -25,6 +25,7 @@ The `card_graph` shows an entity with the actual state and a *min-graph-card* in | ulm_card_graph_type | fill | :material-close: | This is to change the appearance of the graph. Default is fill, but line, bar are valid options. | | ulm_card_graph_hours | 24 | :material-close: | How much time should the graph cover, default is 24 hours. | | ulm_card_graph_points | 0.5 | :material-close: | Specify amount of data points the graph should display for each hour. A larger number results in a more detailed graph. | +| ulm_card_graph_group_by | interval | :material-close: | Specify type of grouping of data, dynamic interval, date or hour. | ## Usage @@ -40,6 +41,7 @@ The `card_graph` shows an entity with the actual state and a *min-graph-card* in ulm_card_graph_entity2: sensor.bedgroom_temperature ulm_card_graph_type: fill ulm_card_graph_hours: 24 + ulm_card_graph_group_by: interval ``` ??? note "Template Code"