Skip to content

Commit b96e302

Browse files
committed
don't expand menu on action
1 parent 18dc14f commit b96e302

File tree

3 files changed

+37
-16
lines changed

3 files changed

+37
-16
lines changed

dist/radial-menu.js

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2730,7 +2730,7 @@ fecha.parse = function (dateStr, format, i18nSettings) {
27302730

27312731
var a=function(){try{(new Date).toLocaleDateString("i");}catch(e){return "RangeError"===e.name}return !1}()?function(e,t){return e.toLocaleDateString(t,{year:"numeric",month:"long",day:"numeric"})}:function(t){return fecha.format(t,"mediumDate")},n=function(){try{(new Date).toLocaleString("i");}catch(e){return "RangeError"===e.name}return !1}()?function(e,t){return e.toLocaleString(t,{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit"})}:function(t){return fecha.format(t,"haDateTime")},r=function(){try{(new Date).toLocaleTimeString("i");}catch(e){return "RangeError"===e.name}return !1}()?function(e,t){return e.toLocaleTimeString(t,{hour:"numeric",minute:"2-digit"})}:function(t){return fecha.format(t,"shortTime")};function f(e){return e.substr(0,e.indexOf("."))}var E=["closed","locked","off"],A=function(e,t,a,n){n=n||{},a=null==a?{}:a;var r=new Event(t,{bubbles:void 0===n.bubbles||n.bubbles,cancelable:Boolean(n.cancelable),composed:void 0===n.composed||n.composed});return r.detail=a,e.dispatchEvent(r),r},C=new Set(["call-service","divider","section","weblink","cast","select"]),L={alert:"toggle",automation:"toggle",climate:"climate",cover:"cover",fan:"toggle",group:"group",input_boolean:"toggle",input_number:"input-number",input_select:"input-select",input_text:"input-text",light:"toggle",lock:"lock",media_player:"media-player",remote:"toggle",scene:"scene",script:"script",sensor:"sensor",timer:"timer",switch:"toggle",vacuum:"toggle",water_heater:"climate",input_datetime:"input-datetime"},O=function(e,t){void 0===t&&(t=!1);var a=function(e,t){return n("hui-error-card",{type:"error",error:e,config:t})},n=function(e,t){var n=window.document.createElement(e);try{n.setConfig(t);}catch(n){return console.error(e,n),a(n.message,t)}return n};if(!e||"object"!=typeof e||!t&&!e.type)return a("No type defined",e);var r=e.type;if(r&&r.startsWith("custom:"))r=r.substr("custom:".length);else if(t)if(C.has(r))r="hui-"+r+"-row";else{if(!e.entity)return a("Invalid config given.",e);var i=e.entity.split(".",1)[0];r="hui-"+(L[i]||"text")+"-entity-row";}else r="hui-"+r+"-card";if(customElements.get(r))return n(r,e);var o=a("Custom element doesn't exist: "+e.type+".",e);o.style.display="None";var s=setTimeout(function(){o.style.display="";},2e3);return customElements.whenDefined(e.type).then(function(){clearTimeout(s),A(o,"ll-rebuild",{},o);}),o};var F=function(e){A(window,"haptic",e);},B=function(e,t,a){void 0===a&&(a=!1),a?history.replaceState(null,"",t):history.pushState(null,"",t),A(window,"location-changed",{replace:a});},U=function(e,t,a){void 0===a&&(a=!0);var n,r=f(t),i="group"===r?"homeassistant":r;switch(r){case"lock":n=a?"unlock":"lock";break;case"cover":n=a?"open_cover":"close_cover";break;default:n=a?"turn_on":"turn_off";}return e.callService(i,n,{entity_id:t})},V=function(e,t){var a=E.includes(e.states[t].state);return U(e,t,a)},W=function(e,t,a,n){var r;if("double_tap"===n&&a.double_tap_action?r=a.double_tap_action:"hold"===n&&a.hold_action?r=a.hold_action:"tap"===n&&a.tap_action&&(r=a.tap_action),r||(r={action:"more-info"}),!r.confirmation||r.confirmation.exemptions&&r.confirmation.exemptions.some(function(e){return e.user===t.user.id})||(F("warning"),confirm(r.confirmation.text||"Are you sure you want to "+r.action+"?")))switch(r.action){case"more-info":(a.entity||a.camera_image)&&A(e,"hass-more-info",{entityId:a.entity?a.entity:a.camera_image});break;case"navigate":r.navigation_path&&B(0,r.navigation_path);break;case"url":r.url_path&&window.open(r.url_path);break;case"toggle":a.entity&&(V(t,a.entity),F("success"));break;case"call-service":if(!r.service)return void F("failure");var i=r.service.split(".",2);t.callService(i[0],i[1],r.service_data),F("success");}};function G(e){return void 0!==e&&"none"!==e.action}
27322732

2733-
const CARD_VERSION = '1.4.4';
2733+
const CARD_VERSION = '1.4.5';
27342734

27352735
const isTouch = "ontouchstart" in window ||
27362736
navigator.maxTouchPoints > 0 ||
@@ -2963,7 +2963,7 @@ let RadialMenu = class RadialMenu extends LitElement {
29632963
@action=${this._handleAction}
29642964
.actionHandler=${actionHandler({
29652965
hasHold: G(item.hold_action),
2966-
hasDoubleTap: G(item.double_tap_action),
2966+
hasDoubleTap: G(item.double_tap_action)
29672967
})}
29682968
.config=${item}
29692969
.stateObj=${{
@@ -2984,7 +2984,7 @@ let RadialMenu = class RadialMenu extends LitElement {
29842984
@action=${this._handleAction}
29852985
.actionHandler=${actionHandler({
29862986
hasHold: G(item.hold_action),
2987-
hasDoubleTap: G(item.double_tap_action),
2987+
hasDoubleTap: G(item.double_tap_action)
29882988
})}
29892989
.config=${item}
29902990
.icon=${item.icon}
@@ -3000,10 +3000,11 @@ let RadialMenu = class RadialMenu extends LitElement {
30003000
? html `
30013001
<state-badge
30023002
class="menu-button"
3003+
.menu=${true}
30033004
@action=${this._handleAction}
30043005
.actionHandler=${actionHandler({
30053006
hasHold: G(this._config.hold_action),
3006-
hasDoubleTap: G(this._config.double_tap_action),
3007+
hasDoubleTap: G(this._config.double_tap_action)
30073008
})}
30083009
.config=${this._config}
30093010
.stateObj=${{
@@ -3017,10 +3018,11 @@ let RadialMenu = class RadialMenu extends LitElement {
30173018
: html `
30183019
<ha-icon
30193020
class="menu-button"
3021+
.menu=${true}
30203022
@action=${this._handleAction}
30213023
.actionHandler=${actionHandler({
30223024
hasHold: G(this._config.hold_action),
3023-
hasDoubleTap: G(this._config.double_tap_action),
3025+
hasDoubleTap: G(this._config.double_tap_action)
30243026
})}
30253027
.icon=${this._config.icon}
30263028
.title=${this._config.name}
@@ -3040,14 +3042,22 @@ let RadialMenu = class RadialMenu extends LitElement {
30403042
}
30413043
_handleAction(ev) {
30423044
const config = ev.target.config;
3045+
console.log(config);
30433046
if (config &&
3044-
config.tap_action &&
3045-
config.tap_action.action === "toggle-menu") {
3047+
((ev.detail.action === "tap" &&
3048+
config.tap_action &&
3049+
config.tap_action.action === "toggle-menu") ||
3050+
(ev.detail.action === "hold" &&
3051+
config.hold_action &&
3052+
config.hold_action.action === "toggle-menu") ||
3053+
(ev.detail.action === "double_tap" &&
3054+
config.double_tap_action &&
3055+
config.double_tap_action.action === "toggle-menu"))) {
30463056
this._toggleMenu();
30473057
}
30483058
else {
30493059
W(this, this.hass, config, ev.detail.action);
3050-
if (this._config.default_dismiss) {
3060+
if (this._config.default_dismiss && !ev.target.menu) {
30513061
this._toggleMenu();
30523062
}
30533063
}

src/const.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const CARD_VERSION = '1.4.4';
1+
export const CARD_VERSION = '1.4.5';

src/radial-menu.ts

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ class RadialMenu extends LitElement {
107107
@action=${this._handleAction}
108108
.actionHandler=${actionHandler({
109109
hasHold: hasAction(item.hold_action),
110-
hasDoubleTap: hasAction(item.double_tap_action),
110+
hasDoubleTap: hasAction(item.double_tap_action)
111111
})}
112112
.config=${item}
113113
.stateObj=${{
@@ -128,7 +128,7 @@ class RadialMenu extends LitElement {
128128
@action=${this._handleAction}
129129
.actionHandler=${actionHandler({
130130
hasHold: hasAction(item.hold_action),
131-
hasDoubleTap: hasAction(item.double_tap_action),
131+
hasDoubleTap: hasAction(item.double_tap_action)
132132
})}
133133
.config=${item}
134134
.icon=${item.icon}
@@ -144,10 +144,11 @@ class RadialMenu extends LitElement {
144144
? html`
145145
<state-badge
146146
class="menu-button"
147+
.menu=${true}
147148
@action=${this._handleAction}
148149
.actionHandler=${actionHandler({
149150
hasHold: hasAction(this._config.hold_action),
150-
hasDoubleTap: hasAction(this._config.double_tap_action),
151+
hasDoubleTap: hasAction(this._config.double_tap_action)
151152
})}
152153
.config=${this._config}
153154
.stateObj=${{
@@ -161,10 +162,11 @@ class RadialMenu extends LitElement {
161162
: html`
162163
<ha-icon
163164
class="menu-button"
165+
.menu=${true}
164166
@action=${this._handleAction}
165167
.actionHandler=${actionHandler({
166168
hasHold: hasAction(this._config.hold_action),
167-
hasDoubleTap: hasAction(this._config.double_tap_action),
169+
hasDoubleTap: hasAction(this._config.double_tap_action)
168170
})}
169171
.icon=${this._config.icon}
170172
.title=${this._config.name}
@@ -187,15 +189,24 @@ class RadialMenu extends LitElement {
187189

188190
private _handleAction(ev): void {
189191
const config = ev.target.config;
192+
console.log(config);
193+
190194
if (
191195
config &&
192-
config.tap_action &&
193-
config.tap_action.action === "toggle-menu"
196+
((ev.detail.action! === "tap" &&
197+
config.tap_action &&
198+
config.tap_action.action === "toggle-menu") ||
199+
(ev.detail.action! === "hold" &&
200+
config.hold_action &&
201+
config.hold_action.action === "toggle-menu") ||
202+
(ev.detail.action! === "double_tap" &&
203+
config.double_tap_action &&
204+
config.double_tap_action.action === "toggle-menu"))
194205
) {
195206
this._toggleMenu();
196207
} else {
197208
handleAction(this, this.hass!, config, ev.detail.action!);
198-
if (this._config!.default_dismiss) {
209+
if (this._config!.default_dismiss && !ev.target.menu) {
199210
this._toggleMenu();
200211
}
201212
}

0 commit comments

Comments
 (0)