@duskmoon-dev/el-tooltip 0.4.0

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.
@@ -0,0 +1,261 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+
29
+ // src/index.ts
30
+ var exports_src = {};
31
+ __export(exports_src, {
32
+ register: () => register,
33
+ ElDmTooltip: () => ElDmTooltip
34
+ });
35
+ module.exports = __toCommonJS(exports_src);
36
+
37
+ // src/el-dm-tooltip.ts
38
+ var import_el_core = require("@duskmoon-dev/el-core");
39
+ var import_tooltip = require("@duskmoon-dev/core/components/tooltip");
40
+ var POSITION_CLASSES = {
41
+ top: "tooltip-top",
42
+ bottom: "tooltip-bottom",
43
+ left: "tooltip-left",
44
+ right: "tooltip-right"
45
+ };
46
+ var coreStyles = import_tooltip.css.replace(/@layer\s+components\s*\{/, "").replace(/\}\s*$/, "");
47
+ var styles = import_el_core.css`
48
+ :host {
49
+ display: inline-flex;
50
+ position: relative;
51
+ }
52
+
53
+ :host([hidden]) {
54
+ display: none !important;
55
+ }
56
+
57
+ ${coreStyles}
58
+
59
+ .tooltip-wrapper {
60
+ display: inline-flex;
61
+ position: relative;
62
+ }
63
+
64
+ .tooltip-content {
65
+ position: absolute;
66
+ z-index: 1000;
67
+ padding: 0.5rem 0.75rem;
68
+ background-color: var(--color-inverse-surface, #1f1f1f);
69
+ color: var(--color-inverse-on-surface, #fff);
70
+ font-size: 0.75rem;
71
+ line-height: 1rem;
72
+ border-radius: 0.375rem;
73
+ white-space: nowrap;
74
+ opacity: 0;
75
+ visibility: hidden;
76
+ transition:
77
+ opacity 150ms ease,
78
+ visibility 150ms ease;
79
+ pointer-events: none;
80
+ font-family: inherit;
81
+ }
82
+
83
+ .tooltip-content.visible {
84
+ opacity: 1;
85
+ visibility: visible;
86
+ }
87
+
88
+ .tooltip-top {
89
+ bottom: 100%;
90
+ left: 50%;
91
+ transform: translateX(-50%);
92
+ margin-bottom: 0.5rem;
93
+ }
94
+
95
+ .tooltip-bottom {
96
+ top: 100%;
97
+ left: 50%;
98
+ transform: translateX(-50%);
99
+ margin-top: 0.5rem;
100
+ }
101
+
102
+ .tooltip-left {
103
+ right: 100%;
104
+ top: 50%;
105
+ transform: translateY(-50%);
106
+ margin-right: 0.5rem;
107
+ }
108
+
109
+ .tooltip-right {
110
+ left: 100%;
111
+ top: 50%;
112
+ transform: translateY(-50%);
113
+ margin-left: 0.5rem;
114
+ }
115
+
116
+ .tooltip-arrow {
117
+ position: absolute;
118
+ width: 0;
119
+ height: 0;
120
+ border: 0.375rem solid transparent;
121
+ }
122
+
123
+ .tooltip-top .tooltip-arrow {
124
+ top: 100%;
125
+ left: 50%;
126
+ transform: translateX(-50%);
127
+ border-top-color: var(--color-inverse-surface, #1f1f1f);
128
+ border-bottom: 0;
129
+ }
130
+
131
+ .tooltip-bottom .tooltip-arrow {
132
+ bottom: 100%;
133
+ left: 50%;
134
+ transform: translateX(-50%);
135
+ border-bottom-color: var(--color-inverse-surface, #1f1f1f);
136
+ border-top: 0;
137
+ }
138
+
139
+ .tooltip-left .tooltip-arrow {
140
+ left: 100%;
141
+ top: 50%;
142
+ transform: translateY(-50%);
143
+ border-left-color: var(--color-inverse-surface, #1f1f1f);
144
+ border-right: 0;
145
+ }
146
+
147
+ .tooltip-right .tooltip-arrow {
148
+ right: 100%;
149
+ top: 50%;
150
+ transform: translateY(-50%);
151
+ border-right-color: var(--color-inverse-surface, #1f1f1f);
152
+ border-left: 0;
153
+ }
154
+ `;
155
+
156
+ class ElDmTooltip extends import_el_core.BaseElement {
157
+ static properties = {
158
+ content: { type: String, reflect: true },
159
+ position: { type: String, reflect: true, default: "top" },
160
+ trigger: { type: String, reflect: true, default: "hover" },
161
+ delay: { type: Number, reflect: true, default: 0 },
162
+ arrow: { type: Boolean, reflect: true, default: true },
163
+ disabled: { type: Boolean, reflect: true }
164
+ };
165
+ _showTimeout = null;
166
+ _isVisible = false;
167
+ constructor() {
168
+ super();
169
+ this.attachStyles(styles);
170
+ }
171
+ _show() {
172
+ if (this.disabled || !this.content)
173
+ return;
174
+ if (this.delay > 0) {
175
+ this._showTimeout = window.setTimeout(() => {
176
+ this._setVisible(true);
177
+ }, this.delay);
178
+ } else {
179
+ this._setVisible(true);
180
+ }
181
+ }
182
+ _hide() {
183
+ if (this._showTimeout) {
184
+ clearTimeout(this._showTimeout);
185
+ this._showTimeout = null;
186
+ }
187
+ this._setVisible(false);
188
+ }
189
+ _setVisible(visible) {
190
+ this._isVisible = visible;
191
+ const tooltipContent = this.shadowRoot?.querySelector(".tooltip-content");
192
+ if (tooltipContent) {
193
+ tooltipContent.classList.toggle("visible", visible);
194
+ }
195
+ }
196
+ _toggle() {
197
+ if (this._isVisible) {
198
+ this._hide();
199
+ } else {
200
+ this._show();
201
+ }
202
+ }
203
+ _getTooltipClasses() {
204
+ const classes = ["tooltip-content"];
205
+ if (this.position && POSITION_CLASSES[this.position]) {
206
+ classes.push(POSITION_CLASSES[this.position]);
207
+ } else {
208
+ classes.push("tooltip-top");
209
+ }
210
+ return classes.join(" ");
211
+ }
212
+ connectedCallback() {
213
+ super.connectedCallback();
214
+ this._setupListeners();
215
+ }
216
+ disconnectedCallback() {
217
+ super.disconnectedCallback?.();
218
+ this._removeListeners();
219
+ }
220
+ _setupListeners() {
221
+ if (this.trigger === "hover") {
222
+ this.addEventListener("mouseenter", this._show.bind(this));
223
+ this.addEventListener("mouseleave", this._hide.bind(this));
224
+ } else if (this.trigger === "click") {
225
+ this.addEventListener("click", this._toggle.bind(this));
226
+ }
227
+ if (this.trigger === "focus" || this.trigger === "hover") {
228
+ this.addEventListener("focusin", this._show.bind(this));
229
+ this.addEventListener("focusout", this._hide.bind(this));
230
+ }
231
+ }
232
+ _removeListeners() {
233
+ this.removeEventListener("mouseenter", this._show.bind(this));
234
+ this.removeEventListener("mouseleave", this._hide.bind(this));
235
+ this.removeEventListener("click", this._toggle.bind(this));
236
+ this.removeEventListener("focusin", this._show.bind(this));
237
+ this.removeEventListener("focusout", this._hide.bind(this));
238
+ }
239
+ render() {
240
+ const tooltipClasses = this._getTooltipClasses();
241
+ return `
242
+ <div class="tooltip-wrapper" part="tooltip">
243
+ <slot></slot>
244
+ <div class="${tooltipClasses}" role="tooltip" part="content">
245
+ ${this.content || ""}
246
+ ${this.arrow ? '<span class="tooltip-arrow" part="arrow"></span>' : ""}
247
+ </div>
248
+ </div>
249
+ `;
250
+ }
251
+ }
252
+
253
+ // src/index.ts
254
+ function register() {
255
+ if (!customElements.get("el-dm-tooltip")) {
256
+ customElements.define("el-dm-tooltip", ElDmTooltip);
257
+ }
258
+ }
259
+
260
+ //# debugId=C16F69374C2DE6DC64756E2164756E21
261
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,11 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/el-dm-tooltip.ts", "../../src/index.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * DuskMoon Tooltip Element\n *\n * A tooltip component for displaying additional information on hover/focus.\n * Uses styles from @duskmoon-dev/core for consistent theming.\n *\n * @element el-dm-tooltip\n *\n * @attr {string} content - Tooltip text content\n * @attr {string} position - Tooltip position: top, bottom, left, right\n * @attr {string} trigger - Trigger mode: hover, click, focus\n * @attr {number} delay - Show delay in milliseconds\n * @attr {boolean} arrow - Whether to show arrow\n * @attr {boolean} disabled - Whether tooltip is disabled\n *\n * @slot - Default slot for trigger element\n *\n * @csspart tooltip - The tooltip container\n * @csspart content - The tooltip content\n * @csspart arrow - The tooltip arrow\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-core';\nimport { css as tooltipCSS } from '@duskmoon-dev/core/components/tooltip';\n\nconst POSITION_CLASSES: Record<string, string> = {\n top: 'tooltip-top',\n bottom: 'tooltip-bottom',\n left: 'tooltip-left',\n right: 'tooltip-right',\n};\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipTrigger = 'hover' | 'click' | 'focus';\n\n// Strip @layer wrapper for Shadow DOM compatibility\nconst coreStyles = tooltipCSS.replace(/@layer\\s+components\\s*\\{/, '').replace(/\\}\\s*$/, '');\n\nconst styles = css`\n :host {\n display: inline-flex;\n position: relative;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n ${coreStyles}\n\n .tooltip-wrapper {\n display: inline-flex;\n position: relative;\n }\n\n .tooltip-content {\n position: absolute;\n z-index: 1000;\n padding: 0.5rem 0.75rem;\n background-color: var(--color-inverse-surface, #1f1f1f);\n color: var(--color-inverse-on-surface, #fff);\n font-size: 0.75rem;\n line-height: 1rem;\n border-radius: 0.375rem;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transition:\n opacity 150ms ease,\n visibility 150ms ease;\n pointer-events: none;\n font-family: inherit;\n }\n\n .tooltip-content.visible {\n opacity: 1;\n visibility: visible;\n }\n\n .tooltip-top {\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-bottom: 0.5rem;\n }\n\n .tooltip-bottom {\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-top: 0.5rem;\n }\n\n .tooltip-left {\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n margin-right: 0.5rem;\n }\n\n .tooltip-right {\n left: 100%;\n top: 50%;\n transform: translateY(-50%);\n margin-left: 0.5rem;\n }\n\n .tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border: 0.375rem solid transparent;\n }\n\n .tooltip-top .tooltip-arrow {\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n border-top-color: var(--color-inverse-surface, #1f1f1f);\n border-bottom: 0;\n }\n\n .tooltip-bottom .tooltip-arrow {\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n border-bottom-color: var(--color-inverse-surface, #1f1f1f);\n border-top: 0;\n }\n\n .tooltip-left .tooltip-arrow {\n left: 100%;\n top: 50%;\n transform: translateY(-50%);\n border-left-color: var(--color-inverse-surface, #1f1f1f);\n border-right: 0;\n }\n\n .tooltip-right .tooltip-arrow {\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n border-right-color: var(--color-inverse-surface, #1f1f1f);\n border-left: 0;\n }\n`;\n\nexport class ElDmTooltip extends BaseElement {\n static properties = {\n content: { type: String, reflect: true },\n position: { type: String, reflect: true, default: 'top' },\n trigger: { type: String, reflect: true, default: 'hover' },\n delay: { type: Number, reflect: true, default: 0 },\n arrow: { type: Boolean, reflect: true, default: true },\n disabled: { type: Boolean, reflect: true },\n };\n\n declare content: string;\n declare position: TooltipPosition;\n declare trigger: TooltipTrigger;\n declare delay: number;\n declare arrow: boolean;\n declare disabled: boolean;\n\n private _showTimeout: number | null = null;\n private _isVisible = false;\n\n constructor() {\n super();\n this.attachStyles(styles);\n }\n\n private _show(): void {\n if (this.disabled || !this.content) return;\n\n if (this.delay > 0) {\n this._showTimeout = window.setTimeout(() => {\n this._setVisible(true);\n }, this.delay);\n } else {\n this._setVisible(true);\n }\n }\n\n private _hide(): void {\n if (this._showTimeout) {\n clearTimeout(this._showTimeout);\n this._showTimeout = null;\n }\n this._setVisible(false);\n }\n\n private _setVisible(visible: boolean): void {\n this._isVisible = visible;\n const tooltipContent = this.shadowRoot?.querySelector('.tooltip-content');\n if (tooltipContent) {\n tooltipContent.classList.toggle('visible', visible);\n }\n }\n\n private _toggle(): void {\n if (this._isVisible) {\n this._hide();\n } else {\n this._show();\n }\n }\n\n private _getTooltipClasses(): string {\n const classes = ['tooltip-content'];\n\n if (this.position && POSITION_CLASSES[this.position]) {\n classes.push(POSITION_CLASSES[this.position]);\n } else {\n classes.push('tooltip-top');\n }\n\n return classes.join(' ');\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this._setupListeners();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback?.();\n this._removeListeners();\n }\n\n private _setupListeners(): void {\n if (this.trigger === 'hover') {\n this.addEventListener('mouseenter', this._show.bind(this));\n this.addEventListener('mouseleave', this._hide.bind(this));\n } else if (this.trigger === 'click') {\n this.addEventListener('click', this._toggle.bind(this));\n }\n\n if (this.trigger === 'focus' || this.trigger === 'hover') {\n this.addEventListener('focusin', this._show.bind(this));\n this.addEventListener('focusout', this._hide.bind(this));\n }\n }\n\n private _removeListeners(): void {\n this.removeEventListener('mouseenter', this._show.bind(this));\n this.removeEventListener('mouseleave', this._hide.bind(this));\n this.removeEventListener('click', this._toggle.bind(this));\n this.removeEventListener('focusin', this._show.bind(this));\n this.removeEventListener('focusout', this._hide.bind(this));\n }\n\n render(): string {\n const tooltipClasses = this._getTooltipClasses();\n\n return `\n <div class=\"tooltip-wrapper\" part=\"tooltip\">\n <slot></slot>\n <div class=\"${tooltipClasses}\" role=\"tooltip\" part=\"content\">\n ${this.content || ''}\n ${this.arrow ? '<span class=\"tooltip-arrow\" part=\"arrow\"></span>' : ''}\n </div>\n </div>\n `;\n }\n}\n",
6
+ "/**\n * @duskmoon-dev/el-tooltip\n *\n * DuskMoon Tooltip custom element\n */\n\nimport { ElDmTooltip } from './el-dm-tooltip.js';\n\nexport { ElDmTooltip };\nexport type { TooltipPosition, TooltipTrigger } from './el-dm-tooltip.js';\n\n/**\n * Register the el-dm-tooltip custom element\n *\n * @example\n * ```ts\n * import { register } from '@duskmoon-dev/el-tooltip';\n * register();\n * ```\n */\nexport function register(): void {\n if (!customElements.get('el-dm-tooltip')) {\n customElements.define('el-dm-tooltip', ElDmTooltip);\n }\n}\n"
7
+ ],
8
+ "mappings": "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",
9
+ "debugId": "C16F69374C2DE6DC64756E2164756E21",
10
+ "names": []
11
+ }
@@ -0,0 +1,264 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
6
+ var __toCommonJS = (from) => {
7
+ var entry = __moduleCache.get(from), desc;
8
+ if (entry)
9
+ return entry;
10
+ entry = __defProp({}, "__esModule", { value: true });
11
+ if (from && typeof from === "object" || typeof from === "function")
12
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
+ get: () => from[key],
14
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
+ }));
16
+ __moduleCache.set(from, entry);
17
+ return entry;
18
+ };
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+
29
+ // src/index.ts
30
+ var exports_src = {};
31
+ __export(exports_src, {
32
+ register: () => register,
33
+ ElDmTooltip: () => ElDmTooltip
34
+ });
35
+ module.exports = __toCommonJS(exports_src);
36
+
37
+ // src/el-dm-tooltip.ts
38
+ var import_el_core = require("@duskmoon-dev/el-core");
39
+ var import_tooltip = require("@duskmoon-dev/core/components/tooltip");
40
+ var POSITION_CLASSES = {
41
+ top: "tooltip-top",
42
+ bottom: "tooltip-bottom",
43
+ left: "tooltip-left",
44
+ right: "tooltip-right"
45
+ };
46
+ var coreStyles = import_tooltip.css.replace(/@layer\s+components\s*\{/, "").replace(/\}\s*$/, "");
47
+ var styles = import_el_core.css`
48
+ :host {
49
+ display: inline-flex;
50
+ position: relative;
51
+ }
52
+
53
+ :host([hidden]) {
54
+ display: none !important;
55
+ }
56
+
57
+ ${coreStyles}
58
+
59
+ .tooltip-wrapper {
60
+ display: inline-flex;
61
+ position: relative;
62
+ }
63
+
64
+ .tooltip-content {
65
+ position: absolute;
66
+ z-index: 1000;
67
+ padding: 0.5rem 0.75rem;
68
+ background-color: var(--color-inverse-surface, #1f1f1f);
69
+ color: var(--color-inverse-on-surface, #fff);
70
+ font-size: 0.75rem;
71
+ line-height: 1rem;
72
+ border-radius: 0.375rem;
73
+ white-space: nowrap;
74
+ opacity: 0;
75
+ visibility: hidden;
76
+ transition:
77
+ opacity 150ms ease,
78
+ visibility 150ms ease;
79
+ pointer-events: none;
80
+ font-family: inherit;
81
+ }
82
+
83
+ .tooltip-content.visible {
84
+ opacity: 1;
85
+ visibility: visible;
86
+ }
87
+
88
+ .tooltip-top {
89
+ bottom: 100%;
90
+ left: 50%;
91
+ transform: translateX(-50%);
92
+ margin-bottom: 0.5rem;
93
+ }
94
+
95
+ .tooltip-bottom {
96
+ top: 100%;
97
+ left: 50%;
98
+ transform: translateX(-50%);
99
+ margin-top: 0.5rem;
100
+ }
101
+
102
+ .tooltip-left {
103
+ right: 100%;
104
+ top: 50%;
105
+ transform: translateY(-50%);
106
+ margin-right: 0.5rem;
107
+ }
108
+
109
+ .tooltip-right {
110
+ left: 100%;
111
+ top: 50%;
112
+ transform: translateY(-50%);
113
+ margin-left: 0.5rem;
114
+ }
115
+
116
+ .tooltip-arrow {
117
+ position: absolute;
118
+ width: 0;
119
+ height: 0;
120
+ border: 0.375rem solid transparent;
121
+ }
122
+
123
+ .tooltip-top .tooltip-arrow {
124
+ top: 100%;
125
+ left: 50%;
126
+ transform: translateX(-50%);
127
+ border-top-color: var(--color-inverse-surface, #1f1f1f);
128
+ border-bottom: 0;
129
+ }
130
+
131
+ .tooltip-bottom .tooltip-arrow {
132
+ bottom: 100%;
133
+ left: 50%;
134
+ transform: translateX(-50%);
135
+ border-bottom-color: var(--color-inverse-surface, #1f1f1f);
136
+ border-top: 0;
137
+ }
138
+
139
+ .tooltip-left .tooltip-arrow {
140
+ left: 100%;
141
+ top: 50%;
142
+ transform: translateY(-50%);
143
+ border-left-color: var(--color-inverse-surface, #1f1f1f);
144
+ border-right: 0;
145
+ }
146
+
147
+ .tooltip-right .tooltip-arrow {
148
+ right: 100%;
149
+ top: 50%;
150
+ transform: translateY(-50%);
151
+ border-right-color: var(--color-inverse-surface, #1f1f1f);
152
+ border-left: 0;
153
+ }
154
+ `;
155
+
156
+ class ElDmTooltip extends import_el_core.BaseElement {
157
+ static properties = {
158
+ content: { type: String, reflect: true },
159
+ position: { type: String, reflect: true, default: "top" },
160
+ trigger: { type: String, reflect: true, default: "hover" },
161
+ delay: { type: Number, reflect: true, default: 0 },
162
+ arrow: { type: Boolean, reflect: true, default: true },
163
+ disabled: { type: Boolean, reflect: true }
164
+ };
165
+ _showTimeout = null;
166
+ _isVisible = false;
167
+ constructor() {
168
+ super();
169
+ this.attachStyles(styles);
170
+ }
171
+ _show() {
172
+ if (this.disabled || !this.content)
173
+ return;
174
+ if (this.delay > 0) {
175
+ this._showTimeout = window.setTimeout(() => {
176
+ this._setVisible(true);
177
+ }, this.delay);
178
+ } else {
179
+ this._setVisible(true);
180
+ }
181
+ }
182
+ _hide() {
183
+ if (this._showTimeout) {
184
+ clearTimeout(this._showTimeout);
185
+ this._showTimeout = null;
186
+ }
187
+ this._setVisible(false);
188
+ }
189
+ _setVisible(visible) {
190
+ this._isVisible = visible;
191
+ const tooltipContent = this.shadowRoot?.querySelector(".tooltip-content");
192
+ if (tooltipContent) {
193
+ tooltipContent.classList.toggle("visible", visible);
194
+ }
195
+ }
196
+ _toggle() {
197
+ if (this._isVisible) {
198
+ this._hide();
199
+ } else {
200
+ this._show();
201
+ }
202
+ }
203
+ _getTooltipClasses() {
204
+ const classes = ["tooltip-content"];
205
+ if (this.position && POSITION_CLASSES[this.position]) {
206
+ classes.push(POSITION_CLASSES[this.position]);
207
+ } else {
208
+ classes.push("tooltip-top");
209
+ }
210
+ return classes.join(" ");
211
+ }
212
+ connectedCallback() {
213
+ super.connectedCallback();
214
+ this._setupListeners();
215
+ }
216
+ disconnectedCallback() {
217
+ super.disconnectedCallback?.();
218
+ this._removeListeners();
219
+ }
220
+ _setupListeners() {
221
+ if (this.trigger === "hover") {
222
+ this.addEventListener("mouseenter", this._show.bind(this));
223
+ this.addEventListener("mouseleave", this._hide.bind(this));
224
+ } else if (this.trigger === "click") {
225
+ this.addEventListener("click", this._toggle.bind(this));
226
+ }
227
+ if (this.trigger === "focus" || this.trigger === "hover") {
228
+ this.addEventListener("focusin", this._show.bind(this));
229
+ this.addEventListener("focusout", this._hide.bind(this));
230
+ }
231
+ }
232
+ _removeListeners() {
233
+ this.removeEventListener("mouseenter", this._show.bind(this));
234
+ this.removeEventListener("mouseleave", this._hide.bind(this));
235
+ this.removeEventListener("click", this._toggle.bind(this));
236
+ this.removeEventListener("focusin", this._show.bind(this));
237
+ this.removeEventListener("focusout", this._hide.bind(this));
238
+ }
239
+ render() {
240
+ const tooltipClasses = this._getTooltipClasses();
241
+ return `
242
+ <div class="tooltip-wrapper" part="tooltip">
243
+ <slot></slot>
244
+ <div class="${tooltipClasses}" role="tooltip" part="content">
245
+ ${this.content || ""}
246
+ ${this.arrow ? '<span class="tooltip-arrow" part="arrow"></span>' : ""}
247
+ </div>
248
+ </div>
249
+ `;
250
+ }
251
+ }
252
+
253
+ // src/index.ts
254
+ function register() {
255
+ if (!customElements.get("el-dm-tooltip")) {
256
+ customElements.define("el-dm-tooltip", ElDmTooltip);
257
+ }
258
+ }
259
+
260
+ // src/register.ts
261
+ register();
262
+
263
+ //# debugId=1333D145610F1D8564756E2164756E21
264
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/el-dm-tooltip.ts", "../../src/index.ts", "../../src/register.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * DuskMoon Tooltip Element\n *\n * A tooltip component for displaying additional information on hover/focus.\n * Uses styles from @duskmoon-dev/core for consistent theming.\n *\n * @element el-dm-tooltip\n *\n * @attr {string} content - Tooltip text content\n * @attr {string} position - Tooltip position: top, bottom, left, right\n * @attr {string} trigger - Trigger mode: hover, click, focus\n * @attr {number} delay - Show delay in milliseconds\n * @attr {boolean} arrow - Whether to show arrow\n * @attr {boolean} disabled - Whether tooltip is disabled\n *\n * @slot - Default slot for trigger element\n *\n * @csspart tooltip - The tooltip container\n * @csspart content - The tooltip content\n * @csspart arrow - The tooltip arrow\n */\n\nimport { BaseElement, css } from '@duskmoon-dev/el-core';\nimport { css as tooltipCSS } from '@duskmoon-dev/core/components/tooltip';\n\nconst POSITION_CLASSES: Record<string, string> = {\n top: 'tooltip-top',\n bottom: 'tooltip-bottom',\n left: 'tooltip-left',\n right: 'tooltip-right',\n};\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\nexport type TooltipTrigger = 'hover' | 'click' | 'focus';\n\n// Strip @layer wrapper for Shadow DOM compatibility\nconst coreStyles = tooltipCSS.replace(/@layer\\s+components\\s*\\{/, '').replace(/\\}\\s*$/, '');\n\nconst styles = css`\n :host {\n display: inline-flex;\n position: relative;\n }\n\n :host([hidden]) {\n display: none !important;\n }\n\n ${coreStyles}\n\n .tooltip-wrapper {\n display: inline-flex;\n position: relative;\n }\n\n .tooltip-content {\n position: absolute;\n z-index: 1000;\n padding: 0.5rem 0.75rem;\n background-color: var(--color-inverse-surface, #1f1f1f);\n color: var(--color-inverse-on-surface, #fff);\n font-size: 0.75rem;\n line-height: 1rem;\n border-radius: 0.375rem;\n white-space: nowrap;\n opacity: 0;\n visibility: hidden;\n transition:\n opacity 150ms ease,\n visibility 150ms ease;\n pointer-events: none;\n font-family: inherit;\n }\n\n .tooltip-content.visible {\n opacity: 1;\n visibility: visible;\n }\n\n .tooltip-top {\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-bottom: 0.5rem;\n }\n\n .tooltip-bottom {\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n margin-top: 0.5rem;\n }\n\n .tooltip-left {\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n margin-right: 0.5rem;\n }\n\n .tooltip-right {\n left: 100%;\n top: 50%;\n transform: translateY(-50%);\n margin-left: 0.5rem;\n }\n\n .tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border: 0.375rem solid transparent;\n }\n\n .tooltip-top .tooltip-arrow {\n top: 100%;\n left: 50%;\n transform: translateX(-50%);\n border-top-color: var(--color-inverse-surface, #1f1f1f);\n border-bottom: 0;\n }\n\n .tooltip-bottom .tooltip-arrow {\n bottom: 100%;\n left: 50%;\n transform: translateX(-50%);\n border-bottom-color: var(--color-inverse-surface, #1f1f1f);\n border-top: 0;\n }\n\n .tooltip-left .tooltip-arrow {\n left: 100%;\n top: 50%;\n transform: translateY(-50%);\n border-left-color: var(--color-inverse-surface, #1f1f1f);\n border-right: 0;\n }\n\n .tooltip-right .tooltip-arrow {\n right: 100%;\n top: 50%;\n transform: translateY(-50%);\n border-right-color: var(--color-inverse-surface, #1f1f1f);\n border-left: 0;\n }\n`;\n\nexport class ElDmTooltip extends BaseElement {\n static properties = {\n content: { type: String, reflect: true },\n position: { type: String, reflect: true, default: 'top' },\n trigger: { type: String, reflect: true, default: 'hover' },\n delay: { type: Number, reflect: true, default: 0 },\n arrow: { type: Boolean, reflect: true, default: true },\n disabled: { type: Boolean, reflect: true },\n };\n\n declare content: string;\n declare position: TooltipPosition;\n declare trigger: TooltipTrigger;\n declare delay: number;\n declare arrow: boolean;\n declare disabled: boolean;\n\n private _showTimeout: number | null = null;\n private _isVisible = false;\n\n constructor() {\n super();\n this.attachStyles(styles);\n }\n\n private _show(): void {\n if (this.disabled || !this.content) return;\n\n if (this.delay > 0) {\n this._showTimeout = window.setTimeout(() => {\n this._setVisible(true);\n }, this.delay);\n } else {\n this._setVisible(true);\n }\n }\n\n private _hide(): void {\n if (this._showTimeout) {\n clearTimeout(this._showTimeout);\n this._showTimeout = null;\n }\n this._setVisible(false);\n }\n\n private _setVisible(visible: boolean): void {\n this._isVisible = visible;\n const tooltipContent = this.shadowRoot?.querySelector('.tooltip-content');\n if (tooltipContent) {\n tooltipContent.classList.toggle('visible', visible);\n }\n }\n\n private _toggle(): void {\n if (this._isVisible) {\n this._hide();\n } else {\n this._show();\n }\n }\n\n private _getTooltipClasses(): string {\n const classes = ['tooltip-content'];\n\n if (this.position && POSITION_CLASSES[this.position]) {\n classes.push(POSITION_CLASSES[this.position]);\n } else {\n classes.push('tooltip-top');\n }\n\n return classes.join(' ');\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this._setupListeners();\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback?.();\n this._removeListeners();\n }\n\n private _setupListeners(): void {\n if (this.trigger === 'hover') {\n this.addEventListener('mouseenter', this._show.bind(this));\n this.addEventListener('mouseleave', this._hide.bind(this));\n } else if (this.trigger === 'click') {\n this.addEventListener('click', this._toggle.bind(this));\n }\n\n if (this.trigger === 'focus' || this.trigger === 'hover') {\n this.addEventListener('focusin', this._show.bind(this));\n this.addEventListener('focusout', this._hide.bind(this));\n }\n }\n\n private _removeListeners(): void {\n this.removeEventListener('mouseenter', this._show.bind(this));\n this.removeEventListener('mouseleave', this._hide.bind(this));\n this.removeEventListener('click', this._toggle.bind(this));\n this.removeEventListener('focusin', this._show.bind(this));\n this.removeEventListener('focusout', this._hide.bind(this));\n }\n\n render(): string {\n const tooltipClasses = this._getTooltipClasses();\n\n return `\n <div class=\"tooltip-wrapper\" part=\"tooltip\">\n <slot></slot>\n <div class=\"${tooltipClasses}\" role=\"tooltip\" part=\"content\">\n ${this.content || ''}\n ${this.arrow ? '<span class=\"tooltip-arrow\" part=\"arrow\"></span>' : ''}\n </div>\n </div>\n `;\n }\n}\n",
6
+ "/**\n * @duskmoon-dev/el-tooltip\n *\n * DuskMoon Tooltip custom element\n */\n\nimport { ElDmTooltip } from './el-dm-tooltip.js';\n\nexport { ElDmTooltip };\nexport type { TooltipPosition, TooltipTrigger } from './el-dm-tooltip.js';\n\n/**\n * Register the el-dm-tooltip custom element\n *\n * @example\n * ```ts\n * import { register } from '@duskmoon-dev/el-tooltip';\n * register();\n * ```\n */\nexport function register(): void {\n if (!customElements.get('el-dm-tooltip')) {\n customElements.define('el-dm-tooltip', ElDmTooltip);\n }\n}\n",
7
+ "import { register } from './index.js';\nregister();\n"
8
+ ],
9
+ "mappings": "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",
10
+ "debugId": "1333D145610F1D8564756E2164756E21",
11
+ "names": []
12
+ }