Skip to content

Commit

Permalink
feat: add trigger by click
Browse files Browse the repository at this point in the history
  • Loading branch information
OysterD3 committed Mar 17, 2021
1 parent dc68151 commit 0ecc720
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 28 deletions.
32 changes: 20 additions & 12 deletions components/tooltip/src/Tooltip.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@
export let html = false;
export let placement = "top";
export let target: null | HTMLElement = null;
// export let trigger: TooltipTrigger[] = ["mouseenter", "click"];
export let trigger: TooltipTrigger[] = ["mouseenter", "click"];
export let timeout = 2000;
const hasSlot = Object.keys($$slots).length > 0;
let clientWidth = 0;
Expand Down Expand Up @@ -111,17 +112,24 @@
parent.insertBefore(firstChild, node);
parent.removeChild(node);
firstChild.addEventListener("click", (e: Event) => {
setPos(<HTMLElement>e.currentTarget);
hide = !hide;
});
firstChild.addEventListener("mouseenter", (e: Event) => {
setPos(<HTMLElement>e.currentTarget);
hide = false;
});
firstChild.addEventListener("mouseleave", () => {
hide = true;
});
if (trigger.includes("click")) {
firstChild.addEventListener("click", (e: Event) => {
setPos(<HTMLElement>e.currentTarget);
hide = false;
setTimeout(() => {
hide = true;
}, timeout);
});
}
if (trigger.includes("mouseenter")) {
firstChild.addEventListener("mouseenter", (e: Event) => {
setPos(<HTMLElement>e.currentTarget);
hide = false;
});
firstChild.addEventListener("mouseleave", () => {
hide = true;
});
}
}
};
</script>
Expand Down
49 changes: 34 additions & 15 deletions components/tooltip/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import type { TooltipProps } from "../types/tooltip";
const attrName = "data-tooltip";

const tooltip = (node: Node, params: Partial<TooltipProps> = {}) => {
// const { trigger = ["mouseenter"] } = params;
const { trigger = ["mouseenter"], timeout = 2000 } = params;

let comp: null | Tooltip = null;

Expand All @@ -20,20 +20,39 @@ const tooltip = (node: Node, params: Partial<TooltipProps> = {}) => {
comp = null;
};

node.addEventListener("mouseenter", (e: Event) => {
if (!comp) {
comp = new Tooltip({
target: document.body,
intro: true,
props: {
...params,
target: node,
text: <string>target.getAttribute(attrName),
},
});
}
node.addEventListener("mouseleave", onDestroy);
});
if (trigger.includes("mouseenter")) {
node.addEventListener("mouseenter", (e: Event) => {
if (!comp) {
comp = new Tooltip({
target: document.body,
intro: true,
props: {
...params,
target: node,
text: <string>target.getAttribute(attrName),
},
});
}
node.addEventListener("mouseleave", onDestroy);
});
}

if (trigger.includes("click")) {
node.addEventListener("click", (e: Event) => {
if (!comp) {
comp = new Tooltip({
target: document.body,
intro: true,
props: {
...params,
target: node,
text: <string>target.getAttribute(attrName),
},
});
setTimeout(onDestroy, timeout);
}
});
}

return {
destroy: onDestroy,
Expand Down
1 change: 1 addition & 0 deletions components/tooltip/types/tooltip.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export interface TooltipProps {
text: string;
html?: boolean;
trigger?: TooltipTrigger[];
timeout?: number;
}

interface TooltipEvents {}
Expand Down
9 changes: 8 additions & 1 deletion src/App.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@

<!-- <Badge count={100} /><Badge count={98} /> -->
<ComponentDetail hint="@responsive-ui/header" block={true}>
<Tooltip text="Responsive UI">
<Tooltip trigger={["click"]} text="Responsive UI">
<Header label="Responsive UI" />
</Tooltip>
</ComponentDetail>
Expand Down Expand Up @@ -520,6 +520,13 @@
>Hover me for Tooltip on bottomRight</span
>
</Column>
<Column span={8}>
<span
title="Click me for Tooltip"
use:tooltip={{ placement: "bottom-right", trigger: ["click"] }}
>Click me for Tooltip on bottomRight</span
>
</Column>
</Row>
</div>

Expand Down

0 comments on commit 0ecc720

Please sign in to comment.