diff --git a/client/web/divkit/src/components/tooltip/Tooltip.svelte b/client/web/divkit/src/components/tooltip/Tooltip.svelte index d1f0176e3..c683a5d8c 100644 --- a/client/web/divkit/src/components/tooltip/Tooltip.svelte +++ b/client/web/divkit/src/components/tooltip/Tooltip.svelte @@ -172,7 +172,15 @@ event.stopPropagation(); event.preventDefault(); - rootCtx.onTooltipClose(internalId); + if (componentContext.getJsonWithVars(data.close_by_tap_outside) !== false) { + rootCtx.onTooltipClose(internalId); + } + + if (data.tap_outside_actions) { + componentContext.execAnyActions(data.tap_outside_actions, { + processUrls: true + }); + } } function onWindowResize(): void { @@ -205,10 +213,13 @@ + + {#if visible && modal} diff --git a/client/web/divkit/src/types/base.d.ts b/client/web/divkit/src/types/base.d.ts index 7c876fdfe..4478d896e 100644 --- a/client/web/divkit/src/types/base.d.ts +++ b/client/web/divkit/src/types/base.d.ts @@ -121,6 +121,8 @@ export interface Tooltip { animation_out?: Animation; mode?: TooltipMode; + tap_outside_actions?: Action[]; + close_by_tap_outside?: boolean; } export interface DivLayoutProvider { diff --git a/schema/div-tooltip.json b/schema/div-tooltip.json index d1449ee95..5637f66fa 100644 --- a/schema/div-tooltip.json +++ b/schema/div-tooltip.json @@ -72,7 +72,8 @@ }, "$description": "translations.json#/div_tooltip_tap_outside_actions", "platforms": [ - "ios" + "ios", + "web" ] }, "close_by_tap_outside": { @@ -81,7 +82,8 @@ "default_value": "true", "platforms": [ "android", - "ios" + "ios", + "web" ] }, "background_accessibility_description": {