@livetemplate/client 0.8.14 → 0.8.18
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/dom/directives.d.ts +30 -0
- package/dist/dom/directives.d.ts.map +1 -1
- package/dist/dom/directives.js +255 -95
- package/dist/dom/directives.js.map +1 -1
- package/dist/dom/event-delegation.d.ts +25 -0
- package/dist/dom/event-delegation.d.ts.map +1 -1
- package/dist/dom/event-delegation.js +138 -21
- package/dist/dom/event-delegation.js.map +1 -1
- package/dist/dom/reactive-attributes.d.ts +30 -12
- package/dist/dom/reactive-attributes.d.ts.map +1 -1
- package/dist/dom/reactive-attributes.js +53 -14
- package/dist/dom/reactive-attributes.js.map +1 -1
- package/dist/livetemplate-client.browser.js +8 -20
- package/dist/livetemplate-client.browser.js.map +4 -4
- package/dist/livetemplate-client.d.ts +7 -0
- package/dist/livetemplate-client.d.ts.map +1 -1
- package/dist/livetemplate-client.js +52 -24
- package/dist/livetemplate-client.js.map +1 -1
- package/dist/tests/directives.test.js +37 -0
- package/dist/tests/directives.test.js.map +1 -1
- package/dist/tests/event-delegation.test.js +1 -0
- package/dist/tests/event-delegation.test.js.map +1 -1
- package/dist/tests/reactive-attributes.test.js +71 -1
- package/dist/tests/reactive-attributes.test.js.map +1 -1
- package/package.json +1 -1
package/dist/dom/directives.d.ts
CHANGED
|
@@ -1,3 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Set up DOM event listeners for lvt-fx: attributes with :on:{event} triggers.
|
|
3
|
+
* Called after each DOM update to handle new elements.
|
|
4
|
+
*
|
|
5
|
+
* @param scanRoot - Element subtree to scan for new fx attributes.
|
|
6
|
+
* @param registryRoot - Element to store listener registry on (always the wrapper).
|
|
7
|
+
* Defaults to scanRoot for backwards compatibility.
|
|
8
|
+
*/
|
|
9
|
+
export declare function setupFxDOMEventTriggers(scanRoot: Element, registryRoot?: Element): void;
|
|
10
|
+
/**
|
|
11
|
+
* Remove direct DOM event listeners registered by setupFxDOMEventTriggers.
|
|
12
|
+
* Call on disconnect to prevent stale listeners across reconnects.
|
|
13
|
+
*/
|
|
14
|
+
export declare function teardownFxDOMEventTriggers(rootElement: Element): void;
|
|
15
|
+
/**
|
|
16
|
+
* Process lvt-fx: attributes triggered by a lifecycle event.
|
|
17
|
+
*/
|
|
18
|
+
export declare function processFxLifecycleAttributes(rootElement: Element, lifecycle: string, actionName?: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Set up document-level lifecycle listeners for lvt-fx: attributes with :on:{lifecycle}.
|
|
21
|
+
* Called once per wrapper at connect time. Scoped to the provided root element so
|
|
22
|
+
* multiple LiveTemplateClient instances on the same page don't cross-fire effects.
|
|
23
|
+
* Stores listener references on the element for teardown via teardownFxLifecycleListeners.
|
|
24
|
+
*/
|
|
25
|
+
export declare function setupFxLifecycleListeners(rootElement: Element): void;
|
|
26
|
+
/**
|
|
27
|
+
* Remove document-level lifecycle listeners registered by setupFxLifecycleListeners.
|
|
28
|
+
* Call on disconnect to prevent listener accumulation across reconnects.
|
|
29
|
+
*/
|
|
30
|
+
export declare function teardownFxLifecycleListeners(rootElement: Element): void;
|
|
1
31
|
export declare function handleScrollDirectives(rootElement: Element): void;
|
|
2
32
|
/**
|
|
3
33
|
* Apply highlight directives to elements with lvt-fx:highlight attributes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../dom/directives.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../dom/directives.ts"],"names":[],"mappings":"AA0BA;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAyCvF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAWrE;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CAiBN;AAmGD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAiBpE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAUvE;AAaD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAMjE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAMpE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAQlE;AAwCD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CA4BhE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAW7C"}
|
package/dist/dom/directives.js
CHANGED
|
@@ -1,61 +1,264 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setupFxDOMEventTriggers = setupFxDOMEventTriggers;
|
|
4
|
+
exports.teardownFxDOMEventTriggers = teardownFxDOMEventTriggers;
|
|
5
|
+
exports.processFxLifecycleAttributes = processFxLifecycleAttributes;
|
|
6
|
+
exports.setupFxLifecycleListeners = setupFxLifecycleListeners;
|
|
7
|
+
exports.teardownFxLifecycleListeners = teardownFxLifecycleListeners;
|
|
3
8
|
exports.handleScrollDirectives = handleScrollDirectives;
|
|
4
9
|
exports.handleHighlightDirectives = handleHighlightDirectives;
|
|
5
10
|
exports.handleAnimateDirectives = handleAnimateDirectives;
|
|
6
11
|
exports.handleToastDirectives = handleToastDirectives;
|
|
7
12
|
exports.setupToastClickOutside = setupToastClickOutside;
|
|
13
|
+
const reactive_attributes_1 = require("./reactive-attributes");
|
|
14
|
+
// ─── Trigger parsing for lvt-fx: attributes ─────────────────────────────────
|
|
15
|
+
const FX_LIFECYCLE_SET = new Set(["pending", "success", "error", "done"]);
|
|
16
|
+
/**
|
|
17
|
+
* Parse a lvt-fx:{effect}[:on:[{action}:]{trigger}] attribute name.
|
|
18
|
+
* Returns the trigger type or null for implicit (no :on:).
|
|
19
|
+
*/
|
|
20
|
+
function parseFxTrigger(attrName) {
|
|
21
|
+
// Check for :on: suffix pattern
|
|
22
|
+
const onMatch = attrName.match(/^lvt-fx:\w+:on:(.+)$/i);
|
|
23
|
+
if (!onMatch)
|
|
24
|
+
return { trigger: null }; // implicit trigger
|
|
25
|
+
const parts = onMatch[1].split(":");
|
|
26
|
+
if (parts.length === 1) {
|
|
27
|
+
return { trigger: parts[0].toLowerCase() };
|
|
28
|
+
}
|
|
29
|
+
// action-scoped: lvt-fx:highlight:on:save:success
|
|
30
|
+
return {
|
|
31
|
+
trigger: parts[parts.length - 1].toLowerCase(),
|
|
32
|
+
actionName: parts.slice(0, -1).join(":"),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Set up DOM event listeners for lvt-fx: attributes with :on:{event} triggers.
|
|
37
|
+
* Called after each DOM update to handle new elements.
|
|
38
|
+
*
|
|
39
|
+
* @param scanRoot - Element subtree to scan for new fx attributes.
|
|
40
|
+
* @param registryRoot - Element to store listener registry on (always the wrapper).
|
|
41
|
+
* Defaults to scanRoot for backwards compatibility.
|
|
42
|
+
*/
|
|
43
|
+
function setupFxDOMEventTriggers(scanRoot, registryRoot) {
|
|
44
|
+
const registry = registryRoot || scanRoot;
|
|
45
|
+
const fxListenersKey = "__lvtFxDirectListeners";
|
|
46
|
+
// Prune stale entries from elements replaced by morphdom
|
|
47
|
+
const fxListeners = (registry[fxListenersKey] || []).filter((entry) => entry.el.isConnected);
|
|
48
|
+
const processEl = (el) => {
|
|
49
|
+
for (const attr of el.attributes) {
|
|
50
|
+
if (!attr.name.startsWith("lvt-fx:"))
|
|
51
|
+
continue;
|
|
52
|
+
const parsed = parseFxTrigger(attr.name);
|
|
53
|
+
if (!parsed.trigger)
|
|
54
|
+
continue; // implicit — handled by normal directive flow
|
|
55
|
+
if (FX_LIFECYCLE_SET.has(parsed.trigger))
|
|
56
|
+
continue; // lifecycle — handled by event listeners
|
|
57
|
+
if (reactive_attributes_1.SYNTHETIC_TRIGGERS.has(parsed.trigger))
|
|
58
|
+
continue; // click-away etc.
|
|
59
|
+
// It's a DOM event trigger
|
|
60
|
+
const listenerKey = `__lvt_fx_${attr.name}`;
|
|
61
|
+
if (el[listenerKey])
|
|
62
|
+
continue; // already attached
|
|
63
|
+
const effect = attr.name.match(/^lvt-fx:(\w+)/i)?.[1];
|
|
64
|
+
if (!effect)
|
|
65
|
+
continue;
|
|
66
|
+
const attrNameCapture = attr.name;
|
|
67
|
+
const listener = () => {
|
|
68
|
+
if (!el.hasAttribute(attrNameCapture))
|
|
69
|
+
return; // attr removed by morphdom
|
|
70
|
+
const currentValue = el.getAttribute(attrNameCapture) || "";
|
|
71
|
+
applyFxEffect(el, effect, currentValue);
|
|
72
|
+
};
|
|
73
|
+
el.addEventListener(parsed.trigger, listener);
|
|
74
|
+
el[listenerKey] = listener;
|
|
75
|
+
fxListeners.push({ el, event: parsed.trigger, handler: listener, guardKey: listenerKey });
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
// Process scan root element itself then descendants (avoids spreading NodeList)
|
|
79
|
+
processEl(scanRoot);
|
|
80
|
+
scanRoot.querySelectorAll("*").forEach(processEl);
|
|
81
|
+
registry[fxListenersKey] = fxListeners;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Remove direct DOM event listeners registered by setupFxDOMEventTriggers.
|
|
85
|
+
* Call on disconnect to prevent stale listeners across reconnects.
|
|
86
|
+
*/
|
|
87
|
+
function teardownFxDOMEventTriggers(rootElement) {
|
|
88
|
+
const fxListenersKey = "__lvtFxDirectListeners";
|
|
89
|
+
const listeners = rootElement[fxListenersKey];
|
|
90
|
+
if (listeners) {
|
|
91
|
+
listeners.forEach(({ el, event, handler, guardKey }) => {
|
|
92
|
+
el.removeEventListener(event, handler);
|
|
93
|
+
delete el[guardKey]; // Clear per-element marker so re-attach works on reconnect
|
|
94
|
+
});
|
|
95
|
+
delete rootElement[fxListenersKey];
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Process lvt-fx: attributes triggered by a lifecycle event.
|
|
100
|
+
*/
|
|
101
|
+
function processFxLifecycleAttributes(rootElement, lifecycle, actionName) {
|
|
102
|
+
const processEl = (el) => {
|
|
103
|
+
for (const attr of el.attributes) {
|
|
104
|
+
if (!attr.name.startsWith("lvt-fx:"))
|
|
105
|
+
continue;
|
|
106
|
+
const parsed = parseFxTrigger(attr.name);
|
|
107
|
+
if (!parsed.trigger || !FX_LIFECYCLE_SET.has(parsed.trigger))
|
|
108
|
+
continue;
|
|
109
|
+
if (parsed.trigger !== lifecycle)
|
|
110
|
+
continue;
|
|
111
|
+
if (parsed.actionName && parsed.actionName !== actionName)
|
|
112
|
+
continue;
|
|
113
|
+
const effect = attr.name.match(/^lvt-fx:(\w+)/i)?.[1];
|
|
114
|
+
if (!effect)
|
|
115
|
+
continue;
|
|
116
|
+
applyFxEffect(el, effect, attr.value);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
processEl(rootElement);
|
|
120
|
+
rootElement.querySelectorAll("*").forEach(processEl);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Apply a visual effect to an element.
|
|
124
|
+
*/
|
|
125
|
+
function applyFxEffect(htmlElement, effect, config) {
|
|
126
|
+
const computed = getComputedStyle(htmlElement);
|
|
127
|
+
switch (effect) {
|
|
128
|
+
case "highlight": {
|
|
129
|
+
// Skip if already mid-highlight to prevent stale originalBackground capture.
|
|
130
|
+
// Intentionally rate-limits to one highlight per element — overlapping triggers
|
|
131
|
+
// (rapid clicks, DOM updates during animation) are coalesced rather than stacked.
|
|
132
|
+
if (htmlElement.__lvtHighlighting)
|
|
133
|
+
break;
|
|
134
|
+
htmlElement.__lvtHighlighting = true;
|
|
135
|
+
const duration = parseInt(computed.getPropertyValue("--lvt-highlight-duration").trim() || "500", 10);
|
|
136
|
+
const color = computed.getPropertyValue("--lvt-highlight-color").trim() || "#ffc107";
|
|
137
|
+
const originalBackground = htmlElement.style.backgroundColor;
|
|
138
|
+
const originalTransition = htmlElement.style.transition;
|
|
139
|
+
htmlElement.style.transition = `background-color ${duration}ms ease-out`;
|
|
140
|
+
htmlElement.style.backgroundColor = color;
|
|
141
|
+
setTimeout(() => {
|
|
142
|
+
if (!htmlElement.isConnected) {
|
|
143
|
+
htmlElement.style.backgroundColor = originalBackground;
|
|
144
|
+
htmlElement.style.transition = originalTransition;
|
|
145
|
+
htmlElement.__lvtHighlighting = false;
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
htmlElement.style.backgroundColor = originalBackground;
|
|
149
|
+
setTimeout(() => {
|
|
150
|
+
if (htmlElement.isConnected)
|
|
151
|
+
htmlElement.style.transition = originalTransition;
|
|
152
|
+
htmlElement.__lvtHighlighting = false;
|
|
153
|
+
}, duration);
|
|
154
|
+
}, 50);
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
case "animate": {
|
|
158
|
+
const duration = parseInt(computed.getPropertyValue("--lvt-animate-duration").trim() || "300", 10);
|
|
159
|
+
const animation = config || "fade";
|
|
160
|
+
htmlElement.style.setProperty("--lvt-animate-duration", `${duration}ms`);
|
|
161
|
+
switch (animation) {
|
|
162
|
+
case "fade":
|
|
163
|
+
htmlElement.style.animation = `lvt-fade-in var(--lvt-animate-duration) ease-out`;
|
|
164
|
+
break;
|
|
165
|
+
case "slide":
|
|
166
|
+
htmlElement.style.animation = `lvt-slide-in var(--lvt-animate-duration) ease-out`;
|
|
167
|
+
break;
|
|
168
|
+
case "scale":
|
|
169
|
+
htmlElement.style.animation = `lvt-scale-in var(--lvt-animate-duration) ease-out`;
|
|
170
|
+
break;
|
|
171
|
+
default:
|
|
172
|
+
console.warn(`Unknown lvt-fx:animate mode: ${animation}`);
|
|
173
|
+
}
|
|
174
|
+
htmlElement.addEventListener("animationend", () => {
|
|
175
|
+
htmlElement.style.animation = "";
|
|
176
|
+
}, { once: true });
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
case "scroll": {
|
|
180
|
+
const rawBehavior = computed.getPropertyValue("--lvt-scroll-behavior").trim();
|
|
181
|
+
const behavior = VALID_SCROLL_BEHAVIORS.has(rawBehavior)
|
|
182
|
+
? rawBehavior : "auto";
|
|
183
|
+
const threshold = parseInt(computed.getPropertyValue("--lvt-scroll-threshold").trim() || "100", 10);
|
|
184
|
+
const mode = config || "bottom";
|
|
185
|
+
switch (mode) {
|
|
186
|
+
case "bottom":
|
|
187
|
+
htmlElement.scrollTo({ top: htmlElement.scrollHeight, behavior });
|
|
188
|
+
break;
|
|
189
|
+
case "bottom-sticky": {
|
|
190
|
+
const isNearBottom = htmlElement.scrollHeight - htmlElement.scrollTop - htmlElement.clientHeight <= threshold;
|
|
191
|
+
if (isNearBottom)
|
|
192
|
+
htmlElement.scrollTo({ top: htmlElement.scrollHeight, behavior });
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
case "top":
|
|
196
|
+
htmlElement.scrollTo({ top: 0, behavior });
|
|
197
|
+
break;
|
|
198
|
+
case "preserve":
|
|
199
|
+
break;
|
|
200
|
+
default:
|
|
201
|
+
console.warn(`Unknown lvt-fx:scroll mode: ${mode}`);
|
|
202
|
+
}
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
default:
|
|
206
|
+
console.warn(`Unknown lvt-fx effect: ${effect}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Set up document-level lifecycle listeners for lvt-fx: attributes with :on:{lifecycle}.
|
|
211
|
+
* Called once per wrapper at connect time. Scoped to the provided root element so
|
|
212
|
+
* multiple LiveTemplateClient instances on the same page don't cross-fire effects.
|
|
213
|
+
* Stores listener references on the element for teardown via teardownFxLifecycleListeners.
|
|
214
|
+
*/
|
|
215
|
+
function setupFxLifecycleListeners(rootElement) {
|
|
216
|
+
const guardKey = "__lvtFxLifecycleSetup";
|
|
217
|
+
if (rootElement[guardKey])
|
|
218
|
+
return;
|
|
219
|
+
rootElement[guardKey] = true;
|
|
220
|
+
const listeners = [];
|
|
221
|
+
const lifecycles = ["pending", "success", "error", "done"];
|
|
222
|
+
lifecycles.forEach(lifecycle => {
|
|
223
|
+
const handler = (e) => {
|
|
224
|
+
const customEvent = e;
|
|
225
|
+
const actionName = customEvent.detail?.action;
|
|
226
|
+
processFxLifecycleAttributes(rootElement, lifecycle, actionName);
|
|
227
|
+
};
|
|
228
|
+
document.addEventListener(`lvt:${lifecycle}`, handler, true);
|
|
229
|
+
listeners.push({ event: `lvt:${lifecycle}`, handler });
|
|
230
|
+
});
|
|
231
|
+
rootElement.__lvtFxLifecycleListeners = listeners;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Remove document-level lifecycle listeners registered by setupFxLifecycleListeners.
|
|
235
|
+
* Call on disconnect to prevent listener accumulation across reconnects.
|
|
236
|
+
*/
|
|
237
|
+
function teardownFxLifecycleListeners(rootElement) {
|
|
238
|
+
const listeners = rootElement.__lvtFxLifecycleListeners;
|
|
239
|
+
if (listeners) {
|
|
240
|
+
listeners.forEach(({ event, handler }) => {
|
|
241
|
+
document.removeEventListener(event, handler, true);
|
|
242
|
+
});
|
|
243
|
+
delete rootElement.__lvtFxLifecycleListeners;
|
|
244
|
+
}
|
|
245
|
+
delete rootElement.__lvtFxLifecycleSetup;
|
|
246
|
+
}
|
|
247
|
+
// ─── Implicit-trigger directive handlers (fire on every DOM update) ──────────
|
|
8
248
|
/**
|
|
9
249
|
* Apply scroll directives on elements with lvt-fx:scroll attributes.
|
|
250
|
+
* Only processes attributes WITHOUT :on: suffix (implicit trigger).
|
|
10
251
|
* Configuration read from CSS custom properties:
|
|
11
252
|
* --lvt-scroll-behavior: auto | smooth (default: auto)
|
|
12
253
|
* --lvt-scroll-threshold: <number> (default: 100)
|
|
13
254
|
*/
|
|
14
255
|
const VALID_SCROLL_BEHAVIORS = new Set(["auto", "smooth", "instant"]);
|
|
15
256
|
function handleScrollDirectives(rootElement) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const htmlElement = element;
|
|
19
|
-
const mode = htmlElement.getAttribute("lvt-fx:scroll");
|
|
20
|
-
const computed = getComputedStyle(htmlElement);
|
|
21
|
-
const rawBehavior = computed.getPropertyValue("--lvt-scroll-behavior").trim();
|
|
22
|
-
const behavior = VALID_SCROLL_BEHAVIORS.has(rawBehavior)
|
|
23
|
-
? rawBehavior
|
|
24
|
-
: "auto";
|
|
25
|
-
const threshold = parseInt(computed.getPropertyValue("--lvt-scroll-threshold").trim() || "100", 10);
|
|
257
|
+
rootElement.querySelectorAll("[lvt-fx\\:scroll]").forEach((element) => {
|
|
258
|
+
const mode = element.getAttribute("lvt-fx:scroll");
|
|
26
259
|
if (!mode)
|
|
27
260
|
return;
|
|
28
|
-
|
|
29
|
-
case "bottom":
|
|
30
|
-
htmlElement.scrollTo({
|
|
31
|
-
top: htmlElement.scrollHeight,
|
|
32
|
-
behavior,
|
|
33
|
-
});
|
|
34
|
-
break;
|
|
35
|
-
case "bottom-sticky": {
|
|
36
|
-
const isNearBottom = htmlElement.scrollHeight -
|
|
37
|
-
htmlElement.scrollTop -
|
|
38
|
-
htmlElement.clientHeight <=
|
|
39
|
-
threshold;
|
|
40
|
-
if (isNearBottom) {
|
|
41
|
-
htmlElement.scrollTo({
|
|
42
|
-
top: htmlElement.scrollHeight,
|
|
43
|
-
behavior,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
break;
|
|
47
|
-
}
|
|
48
|
-
case "top":
|
|
49
|
-
htmlElement.scrollTo({
|
|
50
|
-
top: 0,
|
|
51
|
-
behavior,
|
|
52
|
-
});
|
|
53
|
-
break;
|
|
54
|
-
case "preserve":
|
|
55
|
-
break;
|
|
56
|
-
default:
|
|
57
|
-
console.warn(`Unknown lvt-fx:scroll mode: ${mode}`);
|
|
58
|
-
}
|
|
261
|
+
applyFxEffect(element, "scroll", mode);
|
|
59
262
|
});
|
|
60
263
|
}
|
|
61
264
|
/**
|
|
@@ -65,25 +268,11 @@ function handleScrollDirectives(rootElement) {
|
|
|
65
268
|
* --lvt-highlight-color: <color> (default: #ffc107)
|
|
66
269
|
*/
|
|
67
270
|
function handleHighlightDirectives(rootElement) {
|
|
68
|
-
|
|
69
|
-
highlightElements.forEach((element) => {
|
|
271
|
+
rootElement.querySelectorAll("[lvt-fx\\:highlight]").forEach((element) => {
|
|
70
272
|
const mode = element.getAttribute("lvt-fx:highlight");
|
|
71
|
-
const computed = getComputedStyle(element);
|
|
72
|
-
const duration = parseInt(computed.getPropertyValue("--lvt-highlight-duration").trim() || "500", 10);
|
|
73
|
-
const color = computed.getPropertyValue("--lvt-highlight-color").trim() || "#ffc107";
|
|
74
273
|
if (!mode)
|
|
75
274
|
return;
|
|
76
|
-
|
|
77
|
-
const originalBackground = htmlElement.style.backgroundColor;
|
|
78
|
-
const originalTransition = htmlElement.style.transition;
|
|
79
|
-
htmlElement.style.transition = `background-color ${duration}ms ease-out`;
|
|
80
|
-
htmlElement.style.backgroundColor = color;
|
|
81
|
-
setTimeout(() => {
|
|
82
|
-
htmlElement.style.backgroundColor = originalBackground;
|
|
83
|
-
setTimeout(() => {
|
|
84
|
-
htmlElement.style.transition = originalTransition;
|
|
85
|
-
}, duration);
|
|
86
|
-
}, 50);
|
|
275
|
+
applyFxEffect(element, "highlight", mode);
|
|
87
276
|
});
|
|
88
277
|
}
|
|
89
278
|
/**
|
|
@@ -92,32 +281,15 @@ function handleHighlightDirectives(rootElement) {
|
|
|
92
281
|
* --lvt-animate-duration: <ms> (default: 300)
|
|
93
282
|
*/
|
|
94
283
|
function handleAnimateDirectives(rootElement) {
|
|
95
|
-
|
|
96
|
-
animateElements.forEach((element) => {
|
|
284
|
+
rootElement.querySelectorAll("[lvt-fx\\:animate]").forEach((element) => {
|
|
97
285
|
const animation = element.getAttribute("lvt-fx:animate");
|
|
98
|
-
const computed = getComputedStyle(element);
|
|
99
|
-
const duration = parseInt(computed.getPropertyValue("--lvt-animate-duration").trim() || "300", 10);
|
|
100
286
|
if (!animation)
|
|
101
287
|
return;
|
|
102
|
-
|
|
103
|
-
htmlElement.style.setProperty("--lvt-animate-duration", `${duration}ms`);
|
|
104
|
-
switch (animation) {
|
|
105
|
-
case "fade":
|
|
106
|
-
htmlElement.style.animation = `lvt-fade-in var(--lvt-animate-duration) ease-out`;
|
|
107
|
-
break;
|
|
108
|
-
case "slide":
|
|
109
|
-
htmlElement.style.animation = `lvt-slide-in var(--lvt-animate-duration) ease-out`;
|
|
110
|
-
break;
|
|
111
|
-
case "scale":
|
|
112
|
-
htmlElement.style.animation = `lvt-scale-in var(--lvt-animate-duration) ease-out`;
|
|
113
|
-
break;
|
|
114
|
-
default:
|
|
115
|
-
console.warn(`Unknown lvt-fx:animate mode: ${animation}`);
|
|
116
|
-
}
|
|
117
|
-
htmlElement.addEventListener("animationend", () => {
|
|
118
|
-
htmlElement.style.animation = "";
|
|
119
|
-
}, { once: true });
|
|
288
|
+
applyFxEffect(element, "animate", animation);
|
|
120
289
|
});
|
|
290
|
+
ensureAnimateKeyframes();
|
|
291
|
+
}
|
|
292
|
+
function ensureAnimateKeyframes() {
|
|
121
293
|
if (!document.getElementById("lvt-animate-styles")) {
|
|
122
294
|
const style = document.createElement("style");
|
|
123
295
|
style.id = "lvt-animate-styles";
|
|
@@ -127,24 +299,12 @@ function handleAnimateDirectives(rootElement) {
|
|
|
127
299
|
to { opacity: 1; }
|
|
128
300
|
}
|
|
129
301
|
@keyframes lvt-slide-in {
|
|
130
|
-
from {
|
|
131
|
-
|
|
132
|
-
transform: translateY(-10px);
|
|
133
|
-
}
|
|
134
|
-
to {
|
|
135
|
-
opacity: 1;
|
|
136
|
-
transform: translateY(0);
|
|
137
|
-
}
|
|
302
|
+
from { opacity: 0; transform: translateY(-10px); }
|
|
303
|
+
to { opacity: 1; transform: translateY(0); }
|
|
138
304
|
}
|
|
139
305
|
@keyframes lvt-scale-in {
|
|
140
|
-
from {
|
|
141
|
-
|
|
142
|
-
transform: scale(0.95);
|
|
143
|
-
}
|
|
144
|
-
to {
|
|
145
|
-
opacity: 1;
|
|
146
|
-
transform: scale(1);
|
|
147
|
-
}
|
|
306
|
+
from { opacity: 0; transform: scale(0.95); }
|
|
307
|
+
to { opacity: 1; transform: scale(1); }
|
|
148
308
|
}
|
|
149
309
|
`;
|
|
150
310
|
document.head.appendChild(style);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directives.js","sourceRoot":"","sources":["../../dom/directives.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"directives.js","sourceRoot":"","sources":["../../dom/directives.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ export interface EventDelegationContext {
|
|
|
4
4
|
getRateLimitedHandlers(): WeakMap<Element, Map<string, Function>>;
|
|
5
5
|
parseValue(value: string): any;
|
|
6
6
|
send(message: any): void;
|
|
7
|
+
sendHTTPMultipart(form: HTMLFormElement, action: string): void;
|
|
7
8
|
setActiveSubmission(form: HTMLFormElement | null, button: HTMLButtonElement | null, originalButtonText: string | null): void;
|
|
8
9
|
getWebSocketReadyState(): number | undefined;
|
|
9
10
|
triggerPendingUploads(uploadName: string): void;
|
|
@@ -24,6 +25,30 @@ export declare class EventDelegator {
|
|
|
24
25
|
* DOM manipulation via executeAction from reactive-attributes.
|
|
25
26
|
*/
|
|
26
27
|
setupClickAwayDelegation(): void;
|
|
28
|
+
/**
|
|
29
|
+
* Sets up event listeners for lvt-el:*:on:{event} attributes where {event}
|
|
30
|
+
* is a native DOM event (not a lifecycle state or synthetic trigger).
|
|
31
|
+
*
|
|
32
|
+
* Scans scanRoot (or the full wrapper if omitted) for elements with these
|
|
33
|
+
* attributes. Attaches direct listeners for non-bubbling events (mouseenter,
|
|
34
|
+
* mouseleave) and delegated listeners on the wrapper for bubbling events
|
|
35
|
+
* (click, focusin, focusout, etc.).
|
|
36
|
+
*
|
|
37
|
+
* Bubbling delegation uses closest-match semantics: if both a child and parent
|
|
38
|
+
* have the same trigger, only the child's action fires. This differs from native
|
|
39
|
+
* event bubbling and prevents unintended double-firing in nested structures.
|
|
40
|
+
*
|
|
41
|
+
* Called during connect and after each DOM update to handle new elements.
|
|
42
|
+
*
|
|
43
|
+
* @param scanRoot - Subtree to scan for new attributes. Defaults to full wrapper.
|
|
44
|
+
* Pass the updated element after a DOM patch to avoid a full rescan.
|
|
45
|
+
*/
|
|
46
|
+
setupDOMEventTriggerDelegation(scanRoot?: Element): void;
|
|
47
|
+
/**
|
|
48
|
+
* Remove delegated DOM event trigger listeners added by setupDOMEventTriggerDelegation.
|
|
49
|
+
* Call on disconnect to prevent stale listeners firing on a disconnected component.
|
|
50
|
+
*/
|
|
51
|
+
teardownDOMEventTriggerDelegation(): void;
|
|
27
52
|
/**
|
|
28
53
|
* Sets up focus trapping for elements with lvt-focus-trap attribute.
|
|
29
54
|
* Focus is trapped within the element, cycling through focusable elements
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-delegation.d.ts","sourceRoot":"","sources":["../../dom/event-delegation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"event-delegation.d.ts","sourceRoot":"","sources":["../../dom/event-delegation.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAgB9C,MAAM,WAAW,sBAAsB;IACrC,iBAAiB,IAAI,OAAO,GAAG,IAAI,CAAC;IACpC,sBAAsB,IAAI,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAClE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,iBAAiB,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,mBAAmB,CACjB,IAAI,EAAE,eAAe,GAAG,IAAI,EAC5B,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAChC,IAAI,CAAC;IACR,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAAC;IAC7C,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACjD;AAED;;GAEG;AACH,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,MAAM;IAGjC,OAAO,CAAC,iBAAiB;IAYzB,oBAAoB,IAAI,IAAI;IAyY5B,0BAA0B,IAAI,IAAI;IA8FlC;;;;OAIG;IACH,wBAAwB,IAAI,IAAI;IAuChC;;;;;;;;;;;;;;;;;OAiBG;IACH,8BAA8B,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI;IA6ExD;;;OAGG;IACH,iCAAiC,IAAI,IAAI;IAsBzC;;;;OAIG;IACH,wBAAwB,IAAI,IAAI;IAmGhC;;;;OAIG;IACH,wBAAwB,IAAI,IAAI;CA0GjC"}
|