UBERF-9263: Make reactions tooltip reactive (#7849)

Signed-off-by: Kristina Fefelova <kristin.fefelova@gmail.com>
This commit is contained in:
Kristina 2025-01-31 16:30:50 +04:00 committed by GitHub
parent 9071a57706
commit b11e17aee0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,5 @@
import { type IntlString } from '@hcengineering/platform' import { type IntlString } from '@hcengineering/platform'
import { derived } from 'svelte/store' import { derived, get } from 'svelte/store'
import type { AnyComponent, AnySvelteComponent, LabelAndProps, TooltipAlignment } from './types' import type { AnyComponent, AnySvelteComponent, LabelAndProps, TooltipAlignment } from './types'
import { modalStore } from './modals' import { modalStore } from './modals'
@ -20,7 +20,7 @@ export const tooltipstore = derived(modalStore, (modals) => {
return emptyTooltip return emptyTooltip
} }
const tooltip = modals.filter((m) => m?.type === 'tooltip') const tooltip = modals.filter((m) => m?.type === 'tooltip')
return tooltip.length > 0 ? (tooltip[0] as LabelAndProps) : emptyTooltip return tooltip.length > 0 ? (tooltip[tooltip.length - 1] as LabelAndProps) : emptyTooltip
}) })
let toHandler: any let toHandler: any
@ -92,6 +92,10 @@ export function tooltip (node: HTMLElement, options?: LabelAndProps): any {
}, },
destroy () { destroy () {
const currentTooltip = get(tooltipstore)
if (currentTooltip?.element != null && currentTooltip.element === node) {
closeTooltip()
}
node.removeEventListener('mousemove', show) node.removeEventListener('mousemove', show)
node.removeEventListener('mouseleave', hide) node.removeEventListener('mouseleave', hide)
} }
@ -117,7 +121,7 @@ export function showTooltip (
props, props,
anchor, anchor,
onUpdate, onUpdate,
kind: kind ?? 'tooltip', kind,
keys, keys,
type: 'tooltip' type: 'tooltip'
} }
@ -127,10 +131,12 @@ export function showTooltip (
if (tooltip.kind !== undefined && storedValue.kind === undefined) { if (tooltip.kind !== undefined && storedValue.kind === undefined) {
storedValue.kind = tooltip.kind storedValue.kind = tooltip.kind
} }
if (storedValue.kind === undefined) { }
if (storedValue.kind == null) {
storedValue.kind = 'tooltip' storedValue.kind = 'tooltip'
} }
}
old.push(storedValue) old.push(storedValue)
return old return old
}) })