diff --git a/custom_components/ui_lovelace_minimalist/const.py b/custom_components/ui_lovelace_minimalist/const.py index b3fbf9088..877660bfb 100644 --- a/custom_components/ui_lovelace_minimalist/const.py +++ b/custom_components/ui_lovelace_minimalist/const.py @@ -31,6 +31,7 @@ "Polish": "pl", "Portuguese": "pt", "Portuguese (Brazil)": "pt-BR", + "Slovenian": "sl", "Slovak": "sk", "Swedish": "sv", "Turkish": "tr", @@ -51,6 +52,7 @@ "Polish", "Portuguese", "Portuguese (Brazil)", + "Slovenian", "Slovak", "Swedish", "Turkish", diff --git a/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/popup/popup.yaml b/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/popup/popup.yaml index 87740fe7f..eb7bd1104 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/popup/popup.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/adaptive-dash/popup/popup.yaml @@ -17,93 +17,93 @@ states: # light 1: # type: "custom:button-card" # template: "popup_light_brightness" - # entity: + # entity: # light 2: # type: "custom:button-card" # template: "popup_light_brightness" - # entity: + # entity: # light 3: # type: "custom:button-card" # template: "popup_light_brightness" - # entity: + # entity: # light 4: # type: "custom:button-card" # template: "popup_light_brightness" - # entity: + # entity: # light 5: # type: "custom:button-card" # template: "popup_light_brightness" - # entity: + # entity: # light 6: # type: "custom:button-card" # template: "popup_light_brightness" - # entity: + # entity: # light 7: # type: "custom:button-card" # template: "popup_light_brightness" - # entity: + # entity: # light 8: # type: "custom:button-card" # template: "popup_light_brightness" - # entity: + # entity: # light 9: # type: "custom:button-card" # template: "popup_light_brightness" - # entity: + # entity: # light 10: # type: "custom:button-card" # template: "popup_light_brightness" - # entity: + # entity: # ### Mediaplayers # mediaplayer 1: # type: "custom:button-card" # template: "popup_media_player_infos" - # entity: + # entity: # mediaplayer 2: # type: "custom:button-card" # template: "popup_media_player_infos" - # entity: + # entity: # mediaplayer 3: # type: "custom:button-card" # template: "popup_media_player_infos" - # entity: + # entity: # mediaplayer 4: # type: "custom:button-card" # template: "popup_media_player_infos" - # entity: + # entity: # mediaplayer 5: # type: "custom:button-card" # template: "popup_media_player_infos" - # entity: + # entity: # ### Thermostats # climate 1: # type: "custom:button-card" # template: "popup_thermostat_temperature" - # entity: + # entity: # climate 2: # type: "custom:button-card" # template: "popup_thermostat_temperature" - # entity: + # entity: # climate 3: # type: "custom:button-card" # template: "popup_thermostat_temperature" - # entity: + # entity: # climate 4: # type: "custom:button-card" # template: "popup_thermostat_temperature" - # entity: + # entity: # climate 5: # type: "custom:button-card" # template: "popup_thermostat_temperature" - # entity: + # entity: # ### Power # power 1: # type: "custom:button-card" # template: "popup_power_outlet_stats" - # entity: + # entity: # variables: # ulm_popup_power_outlet_sensor1: # ulm_popup_power_outlet_sensor2: @@ -111,7 +111,7 @@ states: # power 2: # type: "custom:button-card" # template: "popup_power_outlet_stats" - # entity: + # entity: # variables: # ulm_popup_power_outlet_sensor1: # ulm_popup_power_outlet_sensor2: @@ -119,7 +119,7 @@ states: # power 3: # type: "custom:button-card" # template: "popup_power_outlet_stats" - # entity: + # entity: # variables: # ulm_popup_power_outlet_sensor1: # ulm_popup_power_outlet_sensor2: @@ -127,7 +127,7 @@ states: # power 4: # type: "custom:button-card" # template: "popup_power_outlet_stats" - # entity: + # entity: # variables: # ulm_popup_power_outlet_sensor1: # ulm_popup_power_outlet_sensor2: @@ -135,7 +135,7 @@ states: # power 5: # type: "custom:button-card" # template: "popup_power_outlet_stats" - # entity: + # entity: # variables: # ulm_popup_power_outlet_sensor1: # ulm_popup_power_outlet_sensor2: 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 d6ca70ec8..3d5902ee4 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 @@ -34,10 +34,29 @@ ulm_actions_card: ]]] navigation_path: "[[[ return variables.ulm_card_tap_action == 'navigate' ? variables.ulm_card_tap_navigate_path : '/0' ]]]" haptic: "[[[ return variables.ulm_card_tap_haptic != null ? variables.ulm_card_tap_haptic : 'none' ]]]" - service: "input_select.select_option" - service_data: - option: "[[[ return variables.ulm_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_input_select ]]]" + service: > + [[[ + var action = variables.ulm_card_tap_action; + + if (action == 'adaptive'){ + return 'input_select.select_option'; + } + + return variables.ulm_card_tap_service; + ]]] + service_data: > + [[[ + var action = variables.ulm_card_tap_action; + + if (action == 'adaptive'){ + return { + 'option': variables.ulm_input_select_option, + 'entity_id': variables.ulm_input_select + }; + } + + return variables.ulm_card_tap_service_data; + ]]] browser_mod: command: "popup" large: true @@ -85,6 +104,7 @@ ulm_actions_card: return popup_config.popup_variables; } } + return {}; ]]] hold_action: action: > @@ -115,14 +135,33 @@ ulm_actions_card: action = 'more-info' } - return action + return action; ]]] navigation_path: "[[[ return variables.ulm_card_hold_action == 'navigate' ? variables.ulm_card_hold_navigate_path : '/0' ]]]" haptic: "[[[ return variables.ulm_card_hold_haptic != null ? variables.ulm_card_hold_haptic : 'none' ]]]" - service: "input_select.select_option" - service_data: - option: "[[[ return variables.ulm_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_input_select ]]]" + service: > + [[[ + var action = variables.ulm_card_hold_action; + + if (action == 'adaptive'){ + return 'input_select.select_option'; + } + + return variables.ulm_card_hold_service; + ]]] + service_data: > + [[[ + var action = variables.ulm_card_hold_action; + + if (action == 'adaptive'){ + return { + 'option': variables.ulm_input_select_option, + 'entity_id': variables.ulm_input_select + }; + } + + return variables.ulm_card_hold_service_data; + ]]] browser_mod: command: "popup" large: true @@ -170,6 +209,7 @@ ulm_actions_card: return popup_config.popup_variables; } } + return {}; ]]] double_tap_action: action: > @@ -200,14 +240,33 @@ ulm_actions_card: action = 'more-info' } - return action + return action; ]]] navigation_path: "[[[ return variables.ulm_card_double_tap_action == 'navigate' ? variables.ulm_card_double_tap_navigate_path : '/0' ]]]" haptic: "[[[ return variables.ulm_card_double_tap_haptic != null ? variables.ulm_card_double_tap_haptic : 'none' ]]]" - service: "input_select.select_option" - service_data: - option: "[[[ return variables.ulm_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_input_select ]]]" + service: > + [[[ + var action = variables.ulm_card_double_tap_action; + + if (action == 'adaptive'){ + return 'input_select.select_option'; + } + + return variables.ulm_card_double_tap_service; + ]]] + service_data: > + [[[ + var action = variables.ulm_card_double_tap_action; + + if (action == 'adaptive'){ + return { + 'option': variables.ulm_input_select_option, + 'entity_id': variables.ulm_input_select + }; + } + + return variables.ulm_card_double_tap_service_data; + ]]] browser_mod: command: "popup" large: true @@ -255,4 +314,5 @@ ulm_actions_card: return popup_config.popup_variables; } } + return {}; ]]] diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card_overlay.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card_overlay.yaml new file mode 100644 index 000000000..592e665aa --- /dev/null +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/actions/actions_card_overlay.yaml @@ -0,0 +1,46 @@ +--- +### Overlay to enable custom actions card over other cards ### +ulm_actions_card_overlay: + template: + - "ulm_custom_actions" + - "ulm_actions_card" + styles: + grid: + - position: "relative" + - z-index: 0 + custom_fields: + actions_card_overlay: + - position: "absolute" + - left: "0px" + - top: "0px" + - height: "100%" + - width: "100%" + - display: "grid" + - z-index: 10 + custom_fields: + actions_card_overlay: + card: + type: "custom:button-card" + template: + - "ulm_actions_card" + entity: "[[[ return (entity != null) ? entity.entity_id : null; ]]]" + show_icon: false + show_name: false + show_label: false + styles: + card: + - height: "100%" + - background: "none" + variables: + ulm_input_select_option: "[[[ return variables.ulm_input_select_option; ]]]" + ulm_input_select: "[[[ return variables.ulm_input_select; ]]]" + ulm_card_tap_action: "[[[ return variables.ulm_card_tap_action; ]]]" + ulm_card_tap_haptic: "[[[ return variables.ulm_card_tap_haptic; ]]]" + ulm_card_tap_navigate_path: "[[[ return variables.ulm_card_tap_navigate_path; ]]]" + ulm_card_hold_action: "[[[ return variables.ulm_card_hold_action; ]]]" + ulm_card_hold_haptic: "[[[ return variables.ulm_card_hold_haptic; ]]]" + ulm_card_hold_navigate_path: "[[[ return variables.ulm_card_hold_navigate_path; ]]]" + ulm_card_double_tap_action: "[[[ return variables.ulm_card_double_tap_action; ]]]" + ulm_card_double_tap_haptic: "[[[ return variables.ulm_card_double_tap_haptic; ]]]" + ulm_card_double_tap_navigate_path: "[[[ return variables.ulm_card_double_tap_navigate_path; ]]]" + ulm_custom_popup: "[[[ return variables.ulm_custom_popup; ]]]" 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 4d8f4c3f9..e130f224a 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 @@ -34,10 +34,29 @@ ulm_actions_icon: ]]] navigation_path: "[[[ return variables.ulm_icon_tap_action == 'navigate' ? variables.ulm_icon_tap_navigate_path : '/0' ]]]" haptic: "[[[ return variables.ulm_icon_tap_haptic != null ? variables.ulm_icon_tap_haptic : 'none' ]]]" - service: "input_select.select_option" - service_data: - option: "[[[ return variables.ulm_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_input_select ]]]" + service: > + [[[ + var action = variables.ulm_icon_tap_action; + + if (action == 'adaptive'){ + return 'input_select.select_option'; + } + + return variables.ulm_icon_tap_service; + ]]] + service_data: > + [[[ + var action = variables.ulm_icon_tap_action; + + if (action == 'adaptive'){ + return { + 'option': variables.ulm_input_select_option, + 'entity_id': variables.ulm_input_select + }; + } + + return variables.ulm_icon_tap_service_data; + ]]] browser_mod: command: "popup" large: true @@ -102,6 +121,7 @@ ulm_actions_icon: return popup_config.popup_variables; } } + return {}; ]]] hold_action: action: > @@ -136,10 +156,29 @@ ulm_actions_icon: ]]] navigation_path: "[[[ return variables.ulm_icon_hold_action == 'navigate' ? variables.ulm_icon_hold_navigate_path : '/0' ]]]" haptic: "[[[ return variables.ulm_icon_hold_haptic != null ? variables.ulm_icon_hold_haptic : 'none' ]]]" - service: "input_select.select_option" - service_data: - option: "[[[ return variables.ulm_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_input_select ]]]" + service: > + [[[ + var action = variables.ulm_icon_hold_action; + + if (action == 'adaptive'){ + return 'input_select.select_option'; + } + + return variables.ulm_icon_hold_service; + ]]] + service_data: > + [[[ + var action = variables.ulm_icon_hold_action; + + if (action == 'adaptive'){ + return { + 'option': variables.ulm_input_select_option, + 'entity_id': variables.ulm_input_select + }; + } + + return variables.ulm_icon_hold_service_data; + ]]] browser_mod: command: "popup" large: true @@ -204,6 +243,7 @@ ulm_actions_icon: return popup_config.popup_variables; } } + return {}; ]]] double_tap_action: action: > @@ -242,10 +282,29 @@ ulm_actions_icon: ]]] navigation_path: "[[[ return variables.ulm_icon_double_tap_action == 'navigate' ? variables.ulm_icon_double_tap_navigate_path : '/0' ]]]" haptic: "[[[ return variables.ulm_icon_double_tap_haptic != null ? variables.ulm_icon_double_tap_haptic : 'none' ]]]" - service: "input_select.select_option" - service_data: - option: "[[[ return variables.ulm_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_input_select ]]]" + service: > + [[[ + var action = variables.ulm_icon_double_tap_action; + + if (action == 'adaptive'){ + return 'input_select.select_option'; + } + + return variables.ulm_icon_double_tap_service; + ]]] + service_data: > + [[[ + var action = variables.ulm_icon_double_tap_action; + + if (action == 'adaptive'){ + return { + 'option': variables.ulm_input_select_option, + 'entity_id': variables.ulm_input_select + }; + } + + return variables.ulm_icon_double_tap_service_data; + ]]] browser_mod: command: "popup" large: true @@ -300,4 +359,5 @@ ulm_actions_icon: return popup_config.popup_variables; } } + return {}; ]]] 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 ff9e1b8db..637a0c304 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 @@ -34,10 +34,29 @@ ulm_actions_name: ]]] navigation_path: "[[[ return variables.ulm_name_tap_action == 'navigate' ? variables.ulm_name_tap_navigate_path : '/0' ]]]" haptic: "[[[ return variables.ulm_name_tap_haptic != null ? variables.ulm_name_tap_haptic : 'none' ]]]" - service: "input_select.select_option" - service_data: - option: "[[[ return variables.ulm_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_input_select ]]]" + service: > + [[[ + var action = variables.ulm_name_tap_action; + + if (action == 'adaptive'){ + return 'input_select.select_option'; + } + + return variables.ulm_name_tap_service; + ]]] + service_data: > + [[[ + var action = variables.ulm_name_tap_action; + + if (action == 'adaptive'){ + return { + 'option': variables.ulm_input_select_option, + 'entity_id': variables.ulm_input_select + }; + } + + return variables.ulm_name_tap_service_data; + ]]] browser_mod: command: "popup" large: true @@ -92,6 +111,7 @@ ulm_actions_name: return popup_config.popup_variables; } } + return {}; ]]] hold_action: action: > @@ -126,10 +146,29 @@ ulm_actions_name: ]]] navigation_path: "[[[ return variables.ulm_name_hold_action == 'navigate' ? variables.ulm_name_hold_navigate_path : '/0' ]]]" haptic: "[[[ return variables.ulm_name_hold_haptic != null ? variables.ulm_name_hold_haptic : 'none' ]]]" - service: "input_select.select_option" - service_data: - option: "[[[ return variables.ulm_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_input_select ]]]" + service: > + [[[ + var action = variables.ulm_name_hold_action; + + if (action == 'adaptive'){ + return 'input_select.select_option'; + } + + return variables.ulm_name_hold_service; + ]]] + service_data: > + [[[ + var action = variables.ulm_name_hold_action; + + if (action == 'adaptive'){ + return { + 'option': variables.ulm_input_select_option, + 'entity_id': variables.ulm_input_select + }; + } + + return variables.ulm_card_name_service_data; + ]]] browser_mod: command: "popup" large: true @@ -184,6 +223,7 @@ ulm_actions_name: return popup_config.popup_variables; } } + return {}; ]]] double_tap_action: action: > @@ -218,10 +258,29 @@ ulm_actions_name: ]]] navigation_path: "[[[ return variables.ulm_name_double_tap_action == 'navigate' ? variables.ulm_name_double_tap_navigate_path : '/0' ]]]" haptic: "[[[ return variables.ulm_name_double_tap_haptic != null ? variables.ulm_name_double_tap_haptic : 'none' ]]]" - service: "input_select.select_option" - service_data: - option: "[[[ return variables.ulm_input_select_option ]]]" - entity_id: "[[[ return variables.ulm_input_select ]]]" + service: > + [[[ + var action = variables.ulm_name_double_tap_action; + + if (action == 'adaptive'){ + return 'input_select.select_option'; + } + + return variables.ulm_name_double_tap_service; + ]]] + service_data: > + [[[ + var action = variables.ulm_name_double_tap_action; + + if (action == 'adaptive'){ + return { + 'option': variables.ulm_input_select_option, + 'entity_id': variables.ulm_input_select + }; + } + + return variables.ulm_name_double_tap_service_data; + ]]] browser_mod: command: "popup" large: true @@ -276,4 +335,5 @@ ulm_actions_name: return popup_config.popup_variables; } } + return {}; ]]] diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_weather.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_weather.yaml index 79516df6a..9f51362e3 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_weather.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_weather.yaml @@ -1,6 +1,8 @@ --- ### Card Weather ### card_weather: + template: + - "ulm_actions_card_overlay" variables: ulm_card_weather_backdrop: false ulm_card_weather_primary_info: "extrema" diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_welcome_scenes.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_welcome_scenes.yaml index cacd234d7..8636c7484 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_welcome_scenes.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_welcome_scenes.yaml @@ -396,15 +396,17 @@ card_scenes_pill_welcome: grid: - grid-template-areas: "n" name: + - justify-self: "center" - font-weight: "bold" - font-size: "9.5px" - - width: "33px" - padding-bottom: "7px" + - overflow: "[[[return (entity.state !== 'on' && entity.state !== 'playing' && entity.state != variables?.state) ? 'visible' : 'hidden']]]" card: - box-shadow: "none" - padding: "0px 5px 5px 5px" - margin-top: "-5px" - border-radius: "50px" + - overflow: "[[[return (entity.state !== 'on' && entity.state !== 'playing' && entity.state != variables?.state) ? 'visible' : 'hidden']]]" card_topbar_welcome: show_icon: false show_name: false diff --git a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/extended_card.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/extended_card.yaml index 19ee39753..ec86a3f34 100644 --- a/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/extended_card.yaml +++ b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/internal_templates/extended_card.yaml @@ -28,30 +28,48 @@ extended_card: ulm_card_tap_action: "[[[ return variables.ulm_card_tap_action; ]]]" ulm_card_tap_haptic: "[[[ return variables.ulm_card_tap_haptic; ]]]" ulm_card_tap_navigate_path: "[[[ return variables.ulm_card_tap_navigate_path; ]]]" + ulm_card_tap_service: "[[[ return variables.ulm_card_tap_service; ]]]" + ulm_card_tap_service_data: "[[[ return variables.ulm_card_tap_service_data]]]" ulm_card_hold_action: "[[[ return variables.ulm_card_hold_action; ]]]" ulm_card_hold_haptic: "[[[ return variables.ulm_card_hold_haptic; ]]]" ulm_card_hold_navigate_path: "[[[ return variables.ulm_card_hold_navigate_path; ]]]" + ulm_card_hold_service: "[[[ return variables.ulm_card_hold_service; ]]]" + ulm_card_hold_service_data: "[[[ return variables.ulm_card_hold_service_data]]]" ulm_card_double_tap_action: "[[[ return variables.ulm_card_double_tap_action; ]]]" ulm_card_double_tap_haptic: "[[[ return variables.ulm_card_double_tap_haptic; ]]]" ulm_card_double_tap_navigate_path: "[[[ return variables.ulm_card_double_tap_navigate_path; ]]]" + ulm_card_double_tap_service: "[[[ return variables.ulm_card_double_tap_service; ]]]" + ulm_card_double_tap_service_data: "[[[ return variables.ulm_card_double_tap_service_data]]]" 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; ]]]" + ulm_icon_tap_service: "[[[ return variables.ulm_icon_tap_service; ]]]" + ulm_icon_tap_service_data: "[[[ return variables.ulm_icon_tap_service_data]]]" ulm_icon_hold_action: "[[[ return variables.ulm_icon_hold_action; ]]]" ulm_icon_hold_haptic: "[[[ return variables.ulm_icon_hold_haptic; ]]]" ulm_icon_hold_navigate_path: "[[[ return variables.ulm_icon_hold_navigate_path; ]]]" + ulm_icon_hold_service: "[[[ return variables.ulm_icon_hold_service; ]]]" + ulm_icon_hold_service_data: "[[[ return variables.ulm_icon_hold_service_data]]]" ulm_icon_double_tap_action: "[[[ return variables.ulm_icon_double_tap_action; ]]]" ulm_icon_double_tap_haptic: "[[[ return variables.ulm_icon_double_tap_haptic; ]]]" ulm_icon_double_tap_navigate_path: "[[[ return variables.ulm_icon_double_tap_navigate_path; ]]]" + 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_name_tap_action: "[[[ return variables.ulm_name_tap_action; ]]]" ulm_name_tap_haptic: "[[[ return variables.ulm_name_tap_haptic; ]]]" ulm_name_tap_navigate_path: "[[[ return variables.ulm_name_tap_navigate_path; ]]]" + ulm_name_tap_service: "[[[ return variables.ulm_name_tap_service; ]]]" + ulm_name_tap_service_data: "[[[ return variables.ulm_name_tap_service_data]]]" ulm_name_hold_action: "[[[ return variables.ulm_name_hold_action; ]]]" ulm_name_hold_haptic: "[[[ return variables.ulm_name_hold_haptic; ]]]" ulm_name_hold_navigate_path: "[[[ return variables.ulm_name_hold_navigate_path; ]]]" + ulm_name_hold_service: "[[[ return variables.ulm_name_hold_service; ]]]" + ulm_name_hold_service_data: "[[[ return variables.ulm_name_hold_service_data]]]" ulm_name_double_tap_action: "[[[ return variables.ulm_name_double_tap_action; ]]]" ulm_name_double_tap_haptic: "[[[ return variables.ulm_name_double_tap_haptic; ]]]" ulm_name_double_tap_navigate_path: "[[[ return variables.ulm_name_double_tap_navigate_path; ]]]" + ulm_name_double_tap_service: "[[[ return variables.ulm_name_double_tap_service; ]]]" + ulm_name_double_tap_service_data: "[[[ return variables.ulm_name_double_tap_service_data]]]" ulm_custom_popup: "[[[ return variables.ulm_custom_popup; ]]]" styles: card: 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 d072ab6f1..7fc2628c8 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 @@ -46,12 +46,18 @@ icon_more_info_alert: 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; ]]]" + ulm_icon_tap_service: "[[[ return variables.ulm_icon_tap_service; ]]]" + ulm_icon_tap_service_data: "[[[ return variables.ulm_icon_tap_service_data]]]" ulm_icon_hold_action: "[[[ return variables.ulm_icon_hold_action; ]]]" ulm_icon_hold_haptic: "[[[ return variables.ulm_icon_hold_haptic; ]]]" ulm_icon_hold_navigate_path: "[[[ return variables.ulm_icon_hold_navigate_path; ]]]" + ulm_icon_hold_service: "[[[ return variables.ulm_icon_hold_service; ]]]" + ulm_icon_hold_service_data: "[[[ return variables.ulm_icon_hold_service_data]]]" ulm_icon_double_tap_action: "[[[ return variables.ulm_icon_double_tap_action; ]]]" ulm_icon_double_tap_haptic: "[[[ return variables.ulm_icon_double_tap_haptic; ]]]" ulm_icon_double_tap_navigate_path: "[[[ return variables.ulm_icon_double_tap_navigate_path; ]]]" + 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: @@ -70,12 +76,18 @@ icon_more_info_alert: ulm_name_tap_action: "[[[ return variables.ulm_name_tap_action; ]]]" ulm_name_tap_haptic: "[[[ return variables.ulm_name_tap_haptic; ]]]" ulm_name_tap_navigate_path: "[[[ return variables.ulm_name_tap_navigate_path; ]]]" + ulm_name_tap_service: "[[[ return variables.ulm_name_tap_service; ]]]" + ulm_name_tap_service_data: "[[[ return variables.ulm_name_tap_service_data]]]" ulm_name_hold_action: "[[[ return variables.ulm_name_hold_action; ]]]" ulm_name_hold_haptic: "[[[ return variables.ulm_name_hold_haptic; ]]]" ulm_name_hold_navigate_path: "[[[ return variables.ulm_name_hold_navigate_path; ]]]" + ulm_name_hold_service: "[[[ return variables.ulm_name_hold_service; ]]]" + ulm_name_hold_service_data: "[[[ return variables.ulm_name_hold_service_data]]]" ulm_name_double_tap_action: "[[[ return variables.ulm_name_double_tap_action; ]]]" ulm_name_double_tap_haptic: "[[[ return variables.ulm_name_double_tap_haptic; ]]]" ulm_name_double_tap_navigate_path: "[[[ return variables.ulm_name_double_tap_navigate_path; ]]]" + ulm_name_double_tap_service: "[[[ return variables.ulm_name_double_tap_service; ]]]" + ulm_name_double_tap_service_data: "[[[ return variables.ulm_name_double_tap_service_data]]]" ulm_custom_popup: "[[[ return variables.ulm_custom_popup; ]]]" styles: card: 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 d4c806178..c6f799ea8 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 @@ -46,12 +46,18 @@ icon_more_info_new: 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; ]]]" + ulm_icon_tap_service: "[[[ return variables.ulm_icon_tap_service; ]]]" + ulm_icon_tap_service_data: "[[[ return variables.ulm_icon_tap_service_data]]]" ulm_icon_hold_action: "[[[ return variables.ulm_icon_hold_action; ]]]" ulm_icon_hold_haptic: "[[[ return variables.ulm_icon_hold_haptic; ]]]" ulm_icon_hold_navigate_path: "[[[ return variables.ulm_icon_hold_navigate_path; ]]]" + ulm_icon_hold_service: "[[[ return variables.ulm_icon_hold_service; ]]]" + ulm_icon_hold_service_data: "[[[ return variables.ulm_icon_hold_service_data]]]" ulm_icon_double_tap_action: "[[[ return variables.ulm_icon_double_tap_action; ]]]" ulm_icon_double_tap_haptic: "[[[ return variables.ulm_icon_double_tap_haptic; ]]]" ulm_icon_double_tap_navigate_path: "[[[ return variables.ulm_icon_double_tap_navigate_path; ]]]" + 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: @@ -70,12 +76,18 @@ icon_more_info_new: ulm_name_tap_action: "[[[ return variables.ulm_name_tap_action; ]]]" ulm_name_tap_haptic: "[[[ return variables.ulm_name_tap_haptic; ]]]" ulm_name_tap_navigate_path: "[[[ return variables.ulm_name_tap_navigate_path; ]]]" + ulm_name_tap_service: "[[[ return variables.ulm_name_tap_service; ]]]" + ulm_name_tap_service_data: "[[[ return variables.ulm_name_tap_service_data]]]" ulm_name_hold_action: "[[[ return variables.ulm_name_hold_action; ]]]" ulm_name_hold_haptic: "[[[ return variables.ulm_name_hold_haptic; ]]]" ulm_name_hold_navigate_path: "[[[ return variables.ulm_name_hold_navigate_path; ]]]" + ulm_name_hold_service: "[[[ return variables.ulm_name_hold_service; ]]]" + ulm_name_hold_service_data: "[[[ return variables.ulm_name_hold_service_data]]]" ulm_name_double_tap_action: "[[[ return variables.ulm_name_double_tap_action; ]]]" ulm_name_double_tap_haptic: "[[[ return variables.ulm_name_double_tap_haptic; ]]]" ulm_name_double_tap_navigate_path: "[[[ return variables.ulm_name_double_tap_navigate_path; ]]]" + ulm_name_double_tap_service: "[[[ return variables.ulm_name_double_tap_service; ]]]" + ulm_name_double_tap_service_data: "[[[ return variables.ulm_name_double_tap_service_data]]]" ulm_custom_popup: "[[[ return variables.ulm_custom_popup; ]]]" styles: card: 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 5565787c8..189f35b60 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 @@ -272,6 +272,7 @@ 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_weather_forecast.yaml b/custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/popup_templates/popups/popup_weather_forecast.yaml index b052e3079..fe2470867 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 @@ -1,5 +1,7 @@ --- popup_weather_forecast: + variables: + ulm_weather_popup_surpress_first_forecast: false show_icon: false show_name: false show_label: false @@ -97,37 +99,72 @@ popup_weather_forecast: temp: "[[[ return entity.attributes.temperature + '°' ]]]" tempminmax: "[[[ return 'Max. ' + entity.attributes.forecast[0].temperature + '° Min. ' + entity.attributes.forecast[0].templow + '°' ]]]" - type: "vertical-stack" - cards: - - type: "custom:button-card" - template: "popup_weather_row" - entity: "[[[ return entity.entity_id ]]]" - variables: - ulm_popup_weather_entity_idx: 0 - - type: "custom:button-card" - template: "popup_weather_row" - entity: "[[[ return entity.entity_id ]]]" - variables: - ulm_popup_weather_entity_idx: 1 - - type: "custom:button-card" - template: "popup_weather_row" - entity: "[[[ return entity.entity_id ]]]" - variables: - ulm_popup_weather_entity_idx: 2 - - type: "custom:button-card" - template: "popup_weather_row" - entity: "[[[ return entity.entity_id ]]]" - variables: - ulm_popup_weather_entity_idx: 3 - - type: "custom:button-card" - template: "popup_weather_row" - entity: "[[[ return entity.entity_id ]]]" - variables: - ulm_popup_weather_entity_idx: 4 - - type: "custom:button-card" - template: "popup_weather_row" - entity: "[[[ return entity.entity_id ]]]" - variables: - ulm_popup_weather_entity_idx: 5 + cards: > + [[[ + let rows = []; + + function generate_weather_row(index) { + var row = { + 'type': 'custom:button-card', + 'template': 'popup_weather_row', + 'entity': entity.entity_id, + 'variables': { + 'ulm_popup_weather_entity_idx': index + } + }; + return row; + } + + let surpress_first_forecast = ('ulm_weather_popup_surpress_first_forecast' in variables) ? variables.ulm_weather_popup_surpress_first_forecast : false; + + let index = 0; + for (let forecast in entity.attributes.forecast) { + + if ((index == 0) && surpress_first_forecast) { + index++; + continue; + } + + rows.push(generate_weather_row(index)); + index++; + if (rows.length >= 6) { + break; + } + } + return rows; + ]]] + # Code above create following cards + # cards: + # - type: "custom:button-card" + # template: "popup_weather_row" + # entity: "[[[ return entity.entity_id ]]]" + # variables: + # ulm_popup_weather_entity_idx: 0 + # - type: "custom:button-card" + # template: "popup_weather_row" + # entity: "[[[ return entity.entity_id ]]]" + # variables: + # ulm_popup_weather_entity_idx: 1 + # - type: "custom:button-card" + # template: "popup_weather_row" + # entity: "[[[ return entity.entity_id ]]]" + # variables: + # ulm_popup_weather_entity_idx: 2 + # - type: "custom:button-card" + # template: "popup_weather_row" + # entity: "[[[ return entity.entity_id ]]]" + # variables: + # ulm_popup_weather_entity_idx: 3 + # - type: "custom:button-card" + # template: "popup_weather_row" + # entity: "[[[ return entity.entity_id ]]]" + # variables: + # ulm_popup_weather_entity_idx: 4 + # - type: "custom:button-card" + # template: "popup_weather_row" + # entity: "[[[ return entity.entity_id ]]]" + # variables: + # ulm_popup_weather_entity_idx: 5 buttons: card: type: "custom:button-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 3dd9b67be..4844809f7 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 @@ -1,6 +1,8 @@ --- popup_weather_radar: template: "popup_weather_forecast" + variables: + ulm_weather_popup_surpress_first_forecast: false styles: grid: - grid-template-areas: "'header' 'content2' 'buttons' 'footer'" diff --git a/custom_components/ui_lovelace_minimalist/translations/sl.json b/custom_components/ui_lovelace_minimalist/translations/sl.json new file mode 100644 index 000000000..56a6e4fbd --- /dev/null +++ b/custom_components/ui_lovelace_minimalist/translations/sl.json @@ -0,0 +1,60 @@ +{ + "title": "UI Lovelace Minimalist", + "config": { + "step": { + "user": { + "title": "UI Lovelace Minimalist nastavitve", + "description": "", + "data": { + "community_cards_enabled": "Omogočite možnost konfiguriranja skupnih kartic s to integracijo, zahteva preverjanje pristnosti GitHub!" + } + }, + "device": { + "title": "Čakanje na aktivacijo naprave" + }, + "reauth_confirm": { + "title": "Potrebno ponovno preverjanje pristnosti", + "description": "Ponovno morate opraviti avtentikacijo z GitHubom." + } + }, + "abort": { + "single_instance_allowed": "Dovoljena je samo ena konfiguracija uporabniškega vmesnika Lovelace Minimalist.", + "not_setup": "UI Lovelace Minimalist ni nastavljen.", + "github": "Ni bilo mogoče preveriti pristnosti z GitHub, poskusite znova pozneje.", + "reauth_successful": "Ponovna avtentikacija je bila uspešna." + }, + "progress": { + "wait_for_device": "1. Odpri {url} \n2.Za avtorizacijo prilepite naslednji ključ ULM: \n```\n{code}\n```\n" + } + }, + "options": { + "step": { + "user": { + "title": "UI Lovelace Minimalist nastavitve", + "description": "", + "data": { + "language": "Jezik", + "sidepanel_enabled": "Omogoči ustvarjanje vnosa nadzorne plošče na stranski plošči.", + "sidepanel_icon": "Ikona stranske plošče", + "sidepanel_title": "Naslov stranske plošče", + "adaptive_ui_enabled": "Omogoči prilagodljivo nadzorno ploščo s pojavnim razdeljenim pogledom", + "adaptive_ui_title": "naslov prilagodljive plošče", + "adaptive_ui_icon": "ikona prilagodljive plošče", + "theme": "Tema", + "include_other_cards": "Vključite vire kartice po meri, od katerih je odvisno.", + "community_cards_enabled": "Omogočite možnost konfiguriranja skupnih kartic s to integracijo, zahteva preverjanje pristnosti GitHub!", + "community_cards": "Izberite skupne kartice, ki jih želite omogočiti." + } + } + }, + "abort": { + "single_instance_allowed": "Dovoljena je samo ena konfiguracija uporabniškega vmesnika Lovelace Minimalist.", + "not_setup": "UI Lovelace Minimalist ni nastavljen." + }, + "error": { + "github_cards": "Pri pridobivanju kartic iz GitHub je šlo nekaj narobe.", + "ack": "Vse izjave morate potrditi.", + "gh_token": "Žeton Github ni nastavljen. Znova namestite to integracijo, da opravite postopek namestitve. (Nobena konfiguracija po meri ne bo izgubljena)" + } + } +} diff --git a/docs/setup/custom_actions.md b/docs/setup/custom_actions.md index 5f8af8fdc..33b34270b 100644 --- a/docs/setup/custom_actions.md +++ b/docs/setup/custom_actions.md @@ -101,6 +101,38 @@ To define the path of `navigate` action, add one of the following depending on y ``` +## Call service action + +It is possible to call a service using the custom actions on the icon, name and card. + +To define the service and its data of `call-service` action, add one of the following +variables depending on your action : + +- ulm_card_tap_service / ulm_card_tap_service_data +- ulm_card_hold_service / ulm_card_hold_service_data +- ulm_card_double_tap_service / ulm_card_double_tap_service_data +- ulm_icon_tap_service / ulm_icon_tap_service_data +- ulm_icon_hold_service / ulm_icon_hold_service_data +- ulm_icon_double_tap_service / ulm_icon_double_tap_service_data +- ulm_name_tap_service / ulm_name_tap_service_data +- ulm_name_hold_service / ulm_name_hold_service_data +- ulm_name_double_tap_service / ulm_name_double_tap_service_data + +The following configuration shows the configuration of a service call using the +tap action. + +```yaml +- type: "custom:button-card" + template: "card_cover" + entity: "cover.somfy_portail" + variables: + ulm_name_tap_action: "call-service" + ulm_name_tap_service: "light.toggle" + ulm_name_tap_service_data: + entity_id: light.light_livingroom_2 + +``` + ## Overwrite custom actions When creating a dashboard, custom actions and the haptic feedback can be overwritten on your card definition. @@ -210,6 +242,17 @@ Most of the internal card templates uses this option. Take a look into the code. --8<-- "custom_components/ui_lovelace_minimalist/lovelace/ulm_templates/card_templates/cards/card_generic.yaml" ``` +### Use template `ulm_actions_card_overlay` + +If you implement a custom card that is based on another Lovelace card like the +[weather card](https://ui-lovelace-minimalist.github.io/UI/usage/cards/card_weather/) you can simply enable custom +card actions by using the template `ulm_actions_card_overlay` on the card. This template adds an overlay over the whole card and +reaction on the tap, hold, double tap actions. It also enables the integration of custom popups for the card. +Actions of the underlying card will be disabled by this method. + +The [weather card](https://ui-lovelace-minimalist.github.io/UI/usage/cards/card_weather/) gives you an example and +will show the usage of this method. + ### Individual implementation The following script shows the usage off all necessary variables and template that will be used by the custom actions. @@ -237,12 +280,18 @@ custom_card: 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; ]]]" + ulm_icon_tap_service: "[[[ return variables.ulm_icon_tap_service; ]]]" + ulm_icon_tap_service_data: "[[[ return variables.ulm_icon_tap_service_data]]]" ulm_icon_hold_action: "[[[ return variables.ulm_icon_hold_action; ]]]" ulm_icon_hold_haptic: "[[[ return variables.ulm_icon_hold_haptic; ]]]" ulm_icon_hold_navigate_path: "[[[ return variables.ulm_icon_hold_navigate_path; ]]]" + ulm_icon_hold_service: "[[[ return variables.ulm_icon_hold_service; ]]]" + ulm_icon_hold_service_data: "[[[ return variables.ulm_icon_hold_service_data]]]" ulm_icon_double_tap_action: "[[[ return variables.ulm_icon_double_tap_action; ]]]" ulm_icon_double_tap_haptic: "[[[ return variables.ulm_icon_double_tap_haptic; ]]]" ulm_icon_double_tap_navigate_path: "[[[ return variables.ulm_icon_double_tap_navigate_path; ]]]" + 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; ]]]" item2: card: @@ -256,12 +305,18 @@ custom_card: ulm_name_tap_action: "[[[ return variables.ulm_name_tap_action; ]]]" ulm_name_tap_haptic: "[[[ return variables.ulm_name_tap_haptic; ]]]" ulm_name_tap_navigate_path: "[[[ return variables.ulm_name_tap_navigate_path; ]]]" + ulm_name_tap_service: "[[[ return variables.ulm_name_tap_service; ]]]" + ulm_name_tap_service_data: "[[[ return variables.ulm_name_tap_service_data]]]" ulm_name_hold_action: "[[[ return variables.ulm_name_hold_action; ]]]" ulm_name_hold_haptic: "[[[ return variables.ulm_name_hold_haptic; ]]]" ulm_name_hold_navigate_path: "[[[ return variables.ulm_name_hold_navigate_path; ]]]" + ulm_name_hold_service: "[[[ return variables.ulm_name_hold_service; ]]]" + ulm_name_hold_service_data: "[[[ return variables.ulm_name_hold_service_data]]]" ulm_name_double_tap_action: "[[[ return variables.ulm_name_double_tap_action; ]]]" ulm_name_double_tap_haptic: "[[[ return variables.ulm_name_double_tap_haptic; ]]]" ulm_name_double_tap_navigate_path: "[[[ return variables.ulm_name_double_tap_navigate_path; ]]]" + ulm_name_double_tap_service: "[[[ return variables.ulm_name_double_tap_service; ]]]" + ulm_name_double_tap_service_data: "[[[ return variables.ulm_name_double_tap_service_data]]]" ulm_custom_popup: "[[[ return variables.ulm_custom_popup; ]]]" ``` @@ -290,3 +345,35 @@ show_name: false show_label: false show_units: false ``` + +The usage of variables within the popup have some restrictions. Default variables of the popup don't work in the same +way as for other custom button cards. The default variables -- defined in the variables section -- will always be overwritten by +the custom actions caller. + +The following code won't work on custom popup cards: + +```yaml +popup_weather_forecast: +... + variables: + ulm_weather_popup_surpress_first_forecast: false +... +``` + +Instead of using the variables section of the card the variables must be checked within a JavaScript template. The following +code shows an example how to check and define a default value of custom popup variable: + +```yaml +element: > + [[[ + let surpress_first_forecast = ('ulm_weather_popup_surpress_first_forecast' in variables) ? variables.ulm_weather_popup_surpress_first_forecast : false; + + if (surpress_first_forecast) { + ... + } + + return surpress_first_forecast; + ]]] +``` + +The code checks if the variable is available before reading from the variabl and if the variable isn't available it will set a default value. diff --git a/docs/usage/popups/popup_weather.md b/docs/usage/popups/popup_weather.md index 3538ab27d..195a96fd1 100644 --- a/docs/usage/popups/popup_weather.md +++ b/docs/usage/popups/popup_weather.md @@ -21,10 +21,18 @@ To enable this popup, add the following code to your card: ```yaml ulm_custom_popup: template: "popup_weather_forecast" + entity: weather.xxx popup_variables: - ulm_popup_weather_entity: weather.xxx + ulm_weather_popup_surpress_first_forecast: false ``` +## Variables + +| Variable | Default | Required | Notes | +|-------------------------------------------|---------|------------------|-------------------------------| +| entity | | :material-check: | | +| ulm_weather_popup_surpress_first_forecast | false | :material-close: | Suppress first forecast entry | + ## Credits - Designed by schumijo