elbe-ui 0.4.9 → 0.4.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/elbe.css
CHANGED
|
@@ -588,6 +588,22 @@ body,
|
|
|
588
588
|
.elbe button > * {
|
|
589
589
|
flex-shrink: 0;
|
|
590
590
|
}
|
|
591
|
+
.elbe ._elbe_tooltip {
|
|
592
|
+
position: fixed;
|
|
593
|
+
background-color: black;
|
|
594
|
+
color: white;
|
|
595
|
+
padding: 0.25rem 0.5rem;
|
|
596
|
+
border-radius: 0.25rem;
|
|
597
|
+
font-size: 1rem;
|
|
598
|
+
white-space: nowrap;
|
|
599
|
+
z-index: 101;
|
|
600
|
+
pointer-events: none;
|
|
601
|
+
}
|
|
602
|
+
@keyframes _tt_show {
|
|
603
|
+
100% {
|
|
604
|
+
opacity: 1;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
591
607
|
.elbe .toast {
|
|
592
608
|
position: fixed;
|
|
593
609
|
bottom: 1rem;
|
|
@@ -621,4 +637,16 @@ body,
|
|
|
621
637
|
outline: 0.15rem solid white;
|
|
622
638
|
}
|
|
623
639
|
|
|
640
|
+
._elbe_tooltip {
|
|
641
|
+
position: fixed;
|
|
642
|
+
background-color: black;
|
|
643
|
+
color: white;
|
|
644
|
+
padding: 0.25rem 0.5rem;
|
|
645
|
+
border-radius: 0.25rem;
|
|
646
|
+
font-size: 1rem;
|
|
647
|
+
white-space: nowrap;
|
|
648
|
+
z-index: 101;
|
|
649
|
+
pointer-events: none;
|
|
650
|
+
}
|
|
651
|
+
|
|
624
652
|
/*# sourceMappingURL=elbe.css.map */
|
package/dist/elbe.css.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../style/elbe.scss","../style/_base.scss","../style/_flex.scss","../style/_components.scss","../style/_toast.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAOQ;AAMR;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;EAGA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGF;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;;;AAIF;AC3DA;AAoBA;AAiEA;AAUA;AAaA;AA8BA;AClHA;AAqBA;AAYA;AAkBA;AAqBA;ACkIA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACrME;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AH3BF;AAAA;AAAA;AAAA;AAAA;EAEE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAMF;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;;AAGF;EACE;;AAGF;AAAA;EAEE;;AAGF;EACE;;AAEF;EACE;;AAGF;EACE;EACA;;AACA;EACE;;AAIJ;EACE;;AAGF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;;AAOF;EACE;;AAGF;EAEE;EACA;EACA;;AAKF;AAAA;EAEE;;AAEF;AAAA;AAAA;AAAA;EAEE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;;AAKF;EACE;EACA;EACA;EACA;;AAGF;EACE;IACE;;EAEF;IACE;;;AAKJ;EACE;;AAEF;EACE;;AACA;EACE;;ACnKJ;AAAA;AAAA;AAAA;AAAA;EAGE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAKF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAKF;EACE;;AAIA;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAMJ;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAKF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAKF;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;;ACvHF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAKJ;EAIE;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAJA;EACE;;AAoBJ;EACE;EACA;EACA;;AAGF;EAGE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EAKE;EAEA;EACA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AACA;EACE;EACA;;AAKN;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACC;EAGD;EAEA;EAEA;EACA;;AAGD;EACE;EACD;EACA;;AAgBD;EACE;;AAcA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EAzCF;EACA;EACA;EACA;EACA;EACA;EACA;;AAuCA;EA7CA;EACA;EACA;EACA;EACA;EACA;EACA;;AAmFF;EACE;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;;AAIF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAIF;EACE;EACA;EACA;;AAGF;EACE;;
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../style/elbe.scss","../style/_base.scss","../style/_flex.scss","../style/_components.scss","../style/_toast.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAOQ;AAMR;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;EAGA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;;;AAGF;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;EAEE;EACA;EACA;EACA;;;AAIF;AC3DA;AAoBA;AAiEA;AAUA;AAaA;AA8BA;AClHA;AAqBA;AAYA;AAkBA;AAqBA;ACkIA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACrME;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AH3BF;AAAA;AAAA;AAAA;AAAA;EAEE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAMF;EACE;;AAEF;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;;AAGF;EACE;;AAGF;AAAA;EAEE;;AAGF;EACE;;AAEF;EACE;;AAGF;EACE;EACA;;AACA;EACE;;AAIJ;EACE;;AAGF;EACE;;AAEF;EACE;;AAEF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;;AAKF;AAAA;AAAA;AAAA;AAAA;EAEE;EACA;;AAOF;EACE;;AAGF;EAEE;EACA;EACA;;AAKF;AAAA;EAEE;;AAEF;AAAA;AAAA;AAAA;EAEE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;EACA;;AAKF;EACE;EACA;EACA;EACA;;AAGF;EACE;IACE;;EAEF;IACE;;;AAKJ;EACE;;AAEF;EACE;;AACA;EACE;;ACnKJ;AAAA;AAAA;AAAA;AAAA;EAGE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAKF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAKF;EACE;;AAIA;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AAMJ;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAKF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAEF;EACE;;AAKF;EACE;IACE;;EAGF;IACE;;EAGF;IACE;;;AAIJ;EACE;IACE;;;AAIJ;EACE;;ACvHF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAKJ;EAIE;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAJA;EACE;;AAoBJ;EACE;EACA;EACA;;AAGF;EAGE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAGF;EAKE;EAEA;EACA;EACA;EACA;EACA;EAEA;EAEA;EAEA;EAEA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AACA;EACE;EACA;;AAKN;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EAGC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACC;EAGD;EAEA;EAEA;EACA;;AAGD;EACE;EACD;EACA;;AAgBD;EACE;;AAcA;EACE;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EAEA;EACA;EAEA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EAzCF;EACA;EACA;EACA;EACA;EACA;EACA;;AAuCA;EA7CA;EACA;EACA;EACA;EACA;EACA;EACA;;AAmFF;EACE;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EAEA;EACA;EACA;;AAIF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAKF;EACE;EACA;EACA;;AAIF;EACE;EACA;EACA;;AAGF;EACE;;AAMF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKF;EACE;IACE;;;AC9VJ;EAII;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;IACE;IACA;;EAEF;IACE;IACA;;;AJyCJ;EACE;;AAEF;EACG;;AAGH;EACE;;;AAMJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA","file":"elbe.css"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component } from "preact";
|
|
2
|
-
import { ActionElbeProps, type ElbeChild, type ElbeColorKinds, type ElbeColorManners } from "../../..";
|
|
2
|
+
import { ActionElbeProps, ElbeProps, type ElbeChild, type ElbeColorKinds, type ElbeColorManners } from "../../..";
|
|
3
3
|
export type IconChild = ElbeChild | ((_: any) => ElbeChild);
|
|
4
4
|
export type IconButtonProps = {
|
|
5
5
|
icon?: IconChild;
|
|
@@ -17,5 +17,5 @@ export declare class IconButton extends Component<IconButtonProps & {
|
|
|
17
17
|
render(): import("preact").JSX.Element;
|
|
18
18
|
}
|
|
19
19
|
export declare function Icon(p: {
|
|
20
|
-
icon: IconChild
|
|
21
|
-
}):
|
|
20
|
+
icon: IconChild;
|
|
21
|
+
} & ElbeProps): import("preact").JSX.Element | null;
|
|
@@ -43,7 +43,5 @@ function _btn(_a, manner) {
|
|
|
43
43
|
export function Icon(p) {
|
|
44
44
|
if (!p.icon)
|
|
45
45
|
return null;
|
|
46
|
-
|
|
47
|
-
return p.icon({});
|
|
48
|
-
return p.icon;
|
|
46
|
+
return (_jsx("span", Object.assign({}, applyProps("icon", p), { children: typeof p.icon === "function" ? p.icon({}) : p.icon })));
|
|
49
47
|
}
|
package/dist/ui/theme/theme.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "preact/jsx-runtime";
|
|
2
|
+
import { useEffect } from "preact/hooks";
|
|
2
3
|
import "../../elbe.css";
|
|
3
4
|
import { ToDo } from "../components/dev/todo";
|
|
4
5
|
import { ColorTheme } from "./colors";
|
|
@@ -29,5 +30,52 @@ export function ElbeTheme(p) {
|
|
|
29
30
|
var _a;
|
|
30
31
|
const theme = "theme" in p ? p.theme : ElbeThemeData.fromSeed((_a = p.seed) !== null && _a !== void 0 ? _a : {});
|
|
31
32
|
const config = makeThemeConfig(p);
|
|
33
|
+
_addTooltip();
|
|
32
34
|
return (_jsxs("div", { class: `elbe ${config.dark ? "dark" : ""} ${config.highVis ? "highvis" : ""} ${config.reducedMotion ? "reduced_motion" : ""}`, children: [p.todoOverlay && _jsx(ToDo.Overlay, {}), _jsx("style", { children: theme.asCss() }), _jsx("style", { children: _configCss(theme, config) }), _jsx(ThemeConfigContext.Provider, { value: config, children: _jsx(ThemeContext.Provider, { value: theme, children: p.children }) })] }));
|
|
33
35
|
}
|
|
36
|
+
function _addTooltip() {
|
|
37
|
+
return useEffect(() => {
|
|
38
|
+
const _gap = 8;
|
|
39
|
+
const onHover = (e) => {
|
|
40
|
+
var _a;
|
|
41
|
+
const target = (_a = e.target) === null || _a === void 0 ? void 0 : _a.closest("[data-tooltip]");
|
|
42
|
+
if (!target)
|
|
43
|
+
return;
|
|
44
|
+
// remove existing tooltip
|
|
45
|
+
const existingTooltip = document.querySelector("._elbe_tooltip");
|
|
46
|
+
if (existingTooltip)
|
|
47
|
+
existingTooltip.remove();
|
|
48
|
+
// create new tooltip
|
|
49
|
+
let tooltip = document.createElement("div");
|
|
50
|
+
tooltip.className = "_elbe_tooltip";
|
|
51
|
+
tooltip.textContent = target.getAttribute("data-tooltip");
|
|
52
|
+
document.body.appendChild(tooltip);
|
|
53
|
+
const rect = target.getBoundingClientRect();
|
|
54
|
+
let top = rect.top - tooltip.offsetHeight - _gap;
|
|
55
|
+
let left = rect.left + rect.width / 2 - tooltip.offsetWidth / 2;
|
|
56
|
+
// Adjust if out of viewport
|
|
57
|
+
if (top < 0)
|
|
58
|
+
top = rect.bottom + _gap;
|
|
59
|
+
if (left < 0)
|
|
60
|
+
left = _gap;
|
|
61
|
+
if (left + tooltip.offsetWidth > window.innerWidth)
|
|
62
|
+
left = window.innerWidth - tooltip.offsetWidth - _gap;
|
|
63
|
+
tooltip.style.top = `${top}px`;
|
|
64
|
+
tooltip.style.left = `${left}px`;
|
|
65
|
+
// remove tooltip when target is removed or mouse leaves
|
|
66
|
+
const observer = new MutationObserver(() => {
|
|
67
|
+
if (!document.body.contains(target) ||
|
|
68
|
+
target === null) {
|
|
69
|
+
tooltip.remove();
|
|
70
|
+
observer.disconnect();
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
74
|
+
target.addEventListener("mouseleave", () => tooltip.remove(), {
|
|
75
|
+
once: true,
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
document.addEventListener("mouseover", onHover);
|
|
79
|
+
return () => document.removeEventListener("mouseover", onHover);
|
|
80
|
+
});
|
|
81
|
+
}
|