From 1f7f1b05cfe1334e89b4c7c887b60424adef3dda Mon Sep 17 00:00:00 2001 From: Alexander Platov Date: Thu, 9 Sep 2021 10:34:51 +0300 Subject: [PATCH] New Tooltip (#167) Signed-off-by: Alexander Platov --- packages/ui/src/components/ActionIcon.svelte | 6 +- packages/ui/src/components/SelectItem.svelte | 2 +- packages/ui/src/components/Tooltip.svelte | 116 ++------------ .../ui/src/components/TooltipInstance.svelte | 146 ++++++++++++++++++ packages/ui/src/index.ts | 20 ++- packages/ui/src/types.ts | 8 + .../src/components/Message.svelte | 8 +- .../src/components/AppItem.svelte | 12 +- .../src/components/Workbench.svelte | 3 +- 9 files changed, 203 insertions(+), 118 deletions(-) create mode 100644 packages/ui/src/components/TooltipInstance.svelte diff --git a/packages/ui/src/components/ActionIcon.svelte b/packages/ui/src/components/ActionIcon.svelte index 8727a1de56..a2b9f3f2ae 100644 --- a/packages/ui/src/components/ActionIcon.svelte +++ b/packages/ui/src/components/ActionIcon.svelte @@ -15,20 +15,20 @@ - + {#if byTitle } diff --git a/packages/ui/src/components/Tooltip.svelte b/packages/ui/src/components/Tooltip.svelte index 501abf613e..0942dbb4aa 100644 --- a/packages/ui/src/components/Tooltip.svelte +++ b/packages/ui/src/components/Tooltip.svelte @@ -15,108 +15,24 @@ -
-
-
-
+
{ + showTooltip(label, triggerHTML, direction) + }} + on:mouseleave={() => { + closeTooltip() + }} +> +
- - diff --git a/packages/ui/src/components/TooltipInstance.svelte b/packages/ui/src/components/TooltipInstance.svelte new file mode 100644 index 0000000000..398a3f308b --- /dev/null +++ b/packages/ui/src/components/TooltipInstance.svelte @@ -0,0 +1,146 @@ + + + +{#if $tooltip.label} +
+
+{/if} + + diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index 6c20f7df42..88e30e6221 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -14,10 +14,12 @@ // import { SvelteComponent } from 'svelte' +import type { AnySvelteComponent, AnyComponent, PopupAlignment, LabelAndProps, TooltipAligment } from './types' +import type { IntlString } from '@anticrm/platform' import Root from './components/internal/Root.svelte' -export type { AnyComponent, AnySvelteComponent, Action } from './types' +export type { AnyComponent, AnySvelteComponent, Action, LabelAndProps, TooltipAligment } from './types' // export { applicationShortcutKey } from './utils' export { getCurrentLocation, navigate, location } from './location' @@ -32,6 +34,7 @@ export { default as Toggle } from './components/Toggle.svelte' export { default as Dialog } from './components/Dialog.svelte' export { default as ToggleWithLabel } from './components/ToggleWithLabel.svelte' export { default as Tooltip } from './components/Tooltip.svelte' +export { default as TooltipInstance } from './components/TooltipInstance.svelte' export { default as CheckBox } from './components/CheckBox.svelte' export { default as Progress } from './components/Progress.svelte' export { default as Tabs } from './components/Tabs.svelte' @@ -66,7 +69,6 @@ export { default as IconThread } from './components/icons/Thread.svelte' export * from './utils' -import type { AnySvelteComponent, AnyComponent, PopupAlignment } from './types' import { writable } from 'svelte/store' export function createApp (target: HTMLElement): SvelteComponent { @@ -100,3 +102,17 @@ export function closePopup (): void { return popups }) } + +export const tooltipstore = writable({ + label: undefined, + element: undefined, + direction: undefined +}) + +export function showTooltip (label: IntlString, element: HTMLElement, direction?: TooltipAligment): void { + tooltipstore.set({ label: label, element: element, direction: direction }) +} + +export function closeTooltip (): void { + tooltipstore.set({ label: undefined, element: undefined, direction: undefined }) +} diff --git a/packages/ui/src/types.ts b/packages/ui/src/types.ts index 54dadfc116..265b5109c4 100644 --- a/packages/ui/src/types.ts +++ b/packages/ui/src/types.ts @@ -55,3 +55,11 @@ export interface Tab { export type TabModel = Tab[] export type PopupAlignment = HTMLElement | 'right' | 'float' + +export type TooltipAligment = 'top' | 'bottom' | 'left' | 'right' + +export interface LabelAndProps { + label: IntlString | undefined + element: HTMLElement | undefined + direction?: TooltipAligment +} diff --git a/plugins/chunter-resources/src/components/Message.svelte b/plugins/chunter-resources/src/components/Message.svelte index be21677aea..7f92964dde 100644 --- a/plugins/chunter-resources/src/components/Message.svelte +++ b/plugins/chunter-resources/src/components/Message.svelte @@ -48,10 +48,10 @@
{#if !thread}
-
-
-
-
+
+
+
+
{/if} diff --git a/plugins/workbench-resources/src/components/AppItem.svelte b/plugins/workbench-resources/src/components/AppItem.svelte index 27f17841cf..9aefb32204 100644 --- a/plugins/workbench-resources/src/components/AppItem.svelte +++ b/plugins/workbench-resources/src/components/AppItem.svelte @@ -24,16 +24,14 @@ export let notify: boolean - + {#if notify}
{/if} + +