@livetemplate/client 0.8.10 → 0.8.13

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.
Files changed (49) hide show
  1. package/dist/dom/directives.d.ts +17 -5
  2. package/dist/dom/directives.d.ts.map +1 -1
  3. package/dist/dom/directives.js +161 -17
  4. package/dist/dom/directives.js.map +1 -1
  5. package/dist/dom/event-delegation.d.ts +5 -3
  6. package/dist/dom/event-delegation.d.ts.map +1 -1
  7. package/dist/dom/event-delegation.js +62 -177
  8. package/dist/dom/event-delegation.js.map +1 -1
  9. package/dist/dom/link-interceptor.js +1 -1
  10. package/dist/dom/link-interceptor.js.map +1 -1
  11. package/dist/dom/reactive-attributes.d.ts +15 -20
  12. package/dist/dom/reactive-attributes.d.ts.map +1 -1
  13. package/dist/dom/reactive-attributes.js +78 -81
  14. package/dist/dom/reactive-attributes.js.map +1 -1
  15. package/dist/livetemplate-client.browser.js +4 -4
  16. package/dist/livetemplate-client.browser.js.map +4 -4
  17. package/dist/livetemplate-client.d.ts +0 -2
  18. package/dist/livetemplate-client.d.ts.map +1 -1
  19. package/dist/livetemplate-client.js +7 -12
  20. package/dist/livetemplate-client.js.map +1 -1
  21. package/dist/state/form-lifecycle-manager.d.ts +1 -3
  22. package/dist/state/form-lifecycle-manager.d.ts.map +1 -1
  23. package/dist/state/form-lifecycle-manager.js +6 -6
  24. package/dist/state/form-lifecycle-manager.js.map +1 -1
  25. package/dist/tests/directives.test.js +33 -33
  26. package/dist/tests/directives.test.js.map +1 -1
  27. package/dist/tests/event-delegation.test.js +7 -9
  28. package/dist/tests/event-delegation.test.js.map +1 -1
  29. package/dist/tests/form-lifecycle-manager.test.js +27 -28
  30. package/dist/tests/form-lifecycle-manager.test.js.map +1 -1
  31. package/dist/tests/reactive-attributes.test.js +60 -84
  32. package/dist/tests/reactive-attributes.test.js.map +1 -1
  33. package/dist/utils/lvt-selector.d.ts +3 -0
  34. package/dist/utils/lvt-selector.d.ts.map +1 -0
  35. package/dist/utils/lvt-selector.js +13 -0
  36. package/dist/utils/lvt-selector.js.map +1 -0
  37. package/package.json +1 -1
  38. package/dist/dom/modal-manager.d.ts +0 -11
  39. package/dist/dom/modal-manager.d.ts.map +0 -1
  40. package/dist/dom/modal-manager.js +0 -62
  41. package/dist/dom/modal-manager.js.map +0 -1
  42. package/dist/tests/modal-manager.test.d.ts +0 -2
  43. package/dist/tests/modal-manager.test.d.ts.map +0 -1
  44. package/dist/tests/modal-manager.test.js +0 -80
  45. package/dist/tests/modal-manager.test.js.map +0 -1
  46. package/dist/utils/confirm.d.ts +0 -12
  47. package/dist/utils/confirm.d.ts.map +0 -1
  48. package/dist/utils/confirm.js +0 -35
  49. package/dist/utils/confirm.js.map +0 -1
@@ -1,13 +1,25 @@
1
- /**
2
- * Apply scroll directives on elements with lvt-scroll attributes.
3
- */
4
1
  export declare function handleScrollDirectives(rootElement: Element): void;
5
2
  /**
6
- * Apply highlight directives to elements with lvt-highlight attributes.
3
+ * Apply highlight directives to elements with lvt-fx:highlight attributes.
4
+ * Configuration read from CSS custom properties:
5
+ * --lvt-highlight-duration: <ms> (default: 500)
6
+ * --lvt-highlight-color: <color> (default: #ffc107)
7
7
  */
8
8
  export declare function handleHighlightDirectives(rootElement: Element): void;
9
9
  /**
10
- * Apply animation directives to elements with lvt-animate attributes.
10
+ * Apply animation directives to elements with lvt-fx:animate attributes.
11
+ * Configuration read from CSS custom properties:
12
+ * --lvt-animate-duration: <ms> (default: 300)
11
13
  */
12
14
  export declare function handleAnimateDirectives(rootElement: Element): void;
15
+ /**
16
+ * Read data-pending toast messages from server trigger elements and create
17
+ * client-managed toast DOM. Called after each LiveTemplate DOM update.
18
+ */
19
+ export declare function handleToastDirectives(rootElement: Element): void;
20
+ /**
21
+ * Set up a document click listener that dismisses all visible toasts when
22
+ * the user clicks outside the toast stack. Called once at connect time.
23
+ */
24
+ export declare function setupToastClickOutside(): void;
13
25
  //# sourceMappingURL=directives.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../dom/directives.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAqDjE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CA4BpE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAyElE"}
1
+ {"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../dom/directives.ts"],"names":[],"mappings":"AAQA,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAuDjE;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CA6BpE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CA0ElE;AAkBD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CA4BhE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAW7C"}
@@ -3,17 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.handleScrollDirectives = handleScrollDirectives;
4
4
  exports.handleHighlightDirectives = handleHighlightDirectives;
5
5
  exports.handleAnimateDirectives = handleAnimateDirectives;
6
+ exports.handleToastDirectives = handleToastDirectives;
7
+ exports.setupToastClickOutside = setupToastClickOutside;
6
8
  /**
7
- * Apply scroll directives on elements with lvt-scroll attributes.
9
+ * Apply scroll directives on elements with lvt-fx:scroll attributes.
10
+ * Configuration read from CSS custom properties:
11
+ * --lvt-scroll-behavior: auto | smooth (default: auto)
12
+ * --lvt-scroll-threshold: <number> (default: 100)
8
13
  */
14
+ const VALID_SCROLL_BEHAVIORS = new Set(["auto", "smooth", "instant"]);
9
15
  function handleScrollDirectives(rootElement) {
10
- const scrollElements = rootElement.querySelectorAll("[lvt-scroll]");
16
+ const scrollElements = rootElement.querySelectorAll("[lvt-fx\\:scroll]");
11
17
  scrollElements.forEach((element) => {
12
18
  const htmlElement = element;
13
- const mode = htmlElement.getAttribute("lvt-scroll");
14
- const behavior = htmlElement.getAttribute("lvt-scroll-behavior") ||
15
- "auto";
16
- const threshold = parseInt(htmlElement.getAttribute("lvt-scroll-threshold") || "100", 10);
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);
17
26
  if (!mode)
18
27
  return;
19
28
  switch (mode) {
@@ -45,19 +54,23 @@ function handleScrollDirectives(rootElement) {
45
54
  case "preserve":
46
55
  break;
47
56
  default:
48
- console.warn(`Unknown lvt-scroll mode: ${mode}`);
57
+ console.warn(`Unknown lvt-fx:scroll mode: ${mode}`);
49
58
  }
50
59
  });
51
60
  }
52
61
  /**
53
- * Apply highlight directives to elements with lvt-highlight attributes.
62
+ * Apply highlight directives to elements with lvt-fx:highlight attributes.
63
+ * Configuration read from CSS custom properties:
64
+ * --lvt-highlight-duration: <ms> (default: 500)
65
+ * --lvt-highlight-color: <color> (default: #ffc107)
54
66
  */
55
67
  function handleHighlightDirectives(rootElement) {
56
- const highlightElements = rootElement.querySelectorAll("[lvt-highlight]");
68
+ const highlightElements = rootElement.querySelectorAll("[lvt-fx\\:highlight]");
57
69
  highlightElements.forEach((element) => {
58
- const mode = element.getAttribute("lvt-highlight");
59
- const duration = parseInt(element.getAttribute("lvt-highlight-duration") || "500", 10);
60
- const color = element.getAttribute("lvt-highlight-color") || "#ffc107";
70
+ 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";
61
74
  if (!mode)
62
75
  return;
63
76
  const htmlElement = element;
@@ -74,13 +87,16 @@ function handleHighlightDirectives(rootElement) {
74
87
  });
75
88
  }
76
89
  /**
77
- * Apply animation directives to elements with lvt-animate attributes.
90
+ * Apply animation directives to elements with lvt-fx:animate attributes.
91
+ * Configuration read from CSS custom properties:
92
+ * --lvt-animate-duration: <ms> (default: 300)
78
93
  */
79
94
  function handleAnimateDirectives(rootElement) {
80
- const animateElements = rootElement.querySelectorAll("[lvt-animate]");
95
+ const animateElements = rootElement.querySelectorAll("[lvt-fx\\:animate]");
81
96
  animateElements.forEach((element) => {
82
- const animation = element.getAttribute("lvt-animate");
83
- const duration = parseInt(element.getAttribute("lvt-animate-duration") || "300", 10);
97
+ const animation = element.getAttribute("lvt-fx:animate");
98
+ const computed = getComputedStyle(element);
99
+ const duration = parseInt(computed.getPropertyValue("--lvt-animate-duration").trim() || "300", 10);
84
100
  if (!animation)
85
101
  return;
86
102
  const htmlElement = element;
@@ -96,7 +112,7 @@ function handleAnimateDirectives(rootElement) {
96
112
  htmlElement.style.animation = `lvt-scale-in var(--lvt-animate-duration) ease-out`;
97
113
  break;
98
114
  default:
99
- console.warn(`Unknown lvt-animate mode: ${animation}`);
115
+ console.warn(`Unknown lvt-fx:animate mode: ${animation}`);
100
116
  }
101
117
  htmlElement.addEventListener("animationend", () => {
102
118
  htmlElement.style.animation = "";
@@ -134,4 +150,132 @@ function handleAnimateDirectives(rootElement) {
134
150
  document.head.appendChild(style);
135
151
  }
136
152
  }
153
+ // Key used to store the last processed data-pending value on each trigger element.
154
+ // Prevents showing the same batch of toasts twice if handleToastDirectives is
155
+ // called multiple times within a single update cycle (e.g. from multiple patches).
156
+ const PENDING_PROCESSED_KEY = "__lvtPendingProcessed";
157
+ /**
158
+ * Read data-pending toast messages from server trigger elements and create
159
+ * client-managed toast DOM. Called after each LiveTemplate DOM update.
160
+ */
161
+ function handleToastDirectives(rootElement) {
162
+ rootElement
163
+ .querySelectorAll("[data-toast-trigger]")
164
+ .forEach((trigger) => {
165
+ const pending = trigger.getAttribute("data-pending");
166
+ if (!pending)
167
+ return;
168
+ // Skip if this exact batch was already processed (handles multi-patch calls)
169
+ if (trigger[PENDING_PROCESSED_KEY] === pending)
170
+ return;
171
+ trigger[PENDING_PROCESSED_KEY] = pending;
172
+ let messages;
173
+ try {
174
+ messages = JSON.parse(pending);
175
+ }
176
+ catch {
177
+ return;
178
+ }
179
+ if (!Array.isArray(messages) || !messages.length)
180
+ return;
181
+ const position = trigger.getAttribute("data-position") || "top-right";
182
+ const stack = getOrCreateToastStack(position);
183
+ messages.forEach((msg) => {
184
+ const el = createToastElement(msg);
185
+ stack.appendChild(el);
186
+ if (typeof msg.dismissMS === "number" && msg.dismissMS > 0) {
187
+ setTimeout(() => el.remove(), msg.dismissMS);
188
+ }
189
+ });
190
+ });
191
+ }
192
+ /**
193
+ * Set up a document click listener that dismisses all visible toasts when
194
+ * the user clicks outside the toast stack. Called once at connect time.
195
+ */
196
+ function setupToastClickOutside() {
197
+ const key = "__lvt_toast_click_outside";
198
+ const existing = document[key];
199
+ if (existing)
200
+ document.removeEventListener("click", existing);
201
+ const listener = (e) => {
202
+ const stack = document.querySelector("[data-lvt-toast-stack]");
203
+ if (!stack || stack.contains(e.target))
204
+ return;
205
+ stack.querySelectorAll("[data-lvt-toast-item]").forEach((el) => el.remove());
206
+ };
207
+ document[key] = listener;
208
+ document.addEventListener("click", listener);
209
+ }
210
+ function getOrCreateToastStack(position) {
211
+ let stack = document.querySelector("[data-lvt-toast-stack]");
212
+ if (!stack) {
213
+ stack = document.createElement("div");
214
+ stack.setAttribute("data-lvt-toast-stack", "");
215
+ stack.setAttribute("aria-live", "polite");
216
+ applyPositionStyles(stack, position);
217
+ document.body.appendChild(stack);
218
+ }
219
+ return stack;
220
+ }
221
+ function applyPositionStyles(stack, position) {
222
+ const s = stack.style;
223
+ switch (position) {
224
+ case "top-left":
225
+ s.top = "1rem";
226
+ s.left = "1rem";
227
+ break;
228
+ case "top-center":
229
+ s.top = "1rem";
230
+ s.left = "50%";
231
+ s.transform = "translateX(-50%)";
232
+ break;
233
+ case "bottom-right":
234
+ s.bottom = "1rem";
235
+ s.right = "1rem";
236
+ break;
237
+ case "bottom-left":
238
+ s.bottom = "1rem";
239
+ s.left = "1rem";
240
+ break;
241
+ case "bottom-center":
242
+ s.bottom = "1rem";
243
+ s.left = "50%";
244
+ s.transform = "translateX(-50%)";
245
+ break;
246
+ default: // top-right
247
+ s.top = "1rem";
248
+ s.right = "1rem";
249
+ break;
250
+ }
251
+ }
252
+ function createToastElement(msg) {
253
+ const el = document.createElement("div");
254
+ el.setAttribute("role", "alert");
255
+ el.setAttribute("data-lvt-toast-item", msg.id);
256
+ if (msg.type)
257
+ el.setAttribute("data-type", msg.type);
258
+ const inner = document.createElement("div");
259
+ inner.setAttribute("data-lvt-toast-content", "");
260
+ if (msg.title) {
261
+ const t = document.createElement("strong");
262
+ t.textContent = msg.title;
263
+ inner.appendChild(t);
264
+ }
265
+ if (msg.body) {
266
+ const b = document.createElement("p");
267
+ b.textContent = msg.body;
268
+ inner.appendChild(b);
269
+ }
270
+ el.appendChild(inner);
271
+ if (msg.dismissible) {
272
+ const btn = document.createElement("button");
273
+ btn.type = "button";
274
+ btn.setAttribute("aria-label", "Dismiss");
275
+ btn.textContent = "×";
276
+ btn.addEventListener("click", () => el.remove());
277
+ el.appendChild(btn);
278
+ }
279
+ return el;
280
+ }
137
281
  //# sourceMappingURL=directives.js.map
@@ -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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"}
@@ -5,8 +5,6 @@ export interface EventDelegationContext {
5
5
  parseValue(value: string): any;
6
6
  send(message: any): void;
7
7
  setActiveSubmission(form: HTMLFormElement | null, button: HTMLButtonElement | null, originalButtonText: string | null): void;
8
- openModal(modalId: string): void;
9
- closeModal(modalId: string): void;
10
8
  getWebSocketReadyState(): number | undefined;
11
9
  triggerPendingUploads(uploadName: string): void;
12
10
  }
@@ -20,8 +18,12 @@ export declare class EventDelegator {
20
18
  private extractButtonData;
21
19
  setupEventDelegation(): void;
22
20
  setupWindowEventDelegation(): void;
21
+ /**
22
+ * Sets up click-away detection for lvt-el:*:on:click-away attributes.
23
+ * Instead of routing to a server action, click-away triggers client-side
24
+ * DOM manipulation via executeAction from reactive-attributes.
25
+ */
23
26
  setupClickAwayDelegation(): void;
24
- setupModalDelegation(): void;
25
27
  /**
26
28
  * Sets up focus trapping for elements with lvt-focus-trap attribute.
27
29
  * 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":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,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,mBAAmB,CACjB,IAAI,EAAE,eAAe,GAAG,IAAI,EAC5B,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAChC,IAAI,CAAC;IACR,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,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;IAuZ5B,0BAA0B,IAAI,IAAI;IAoGlC,wBAAwB,IAAI,IAAI;IAgDhC,oBAAoB,IAAI,IAAI;IAmH5B;;;;OAIG;IACH,wBAAwB,IAAI,IAAI;IAmGhC;;;;OAIG;IACH,wBAAwB,IAAI,IAAI;CA0GjC"}
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;AAa9C,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,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;IA8X5B,0BAA0B,IAAI,IAAI;IA8FlC;;;;OAIG;IACH,wBAAwB,IAAI,IAAI;IAuChC;;;;OAIG;IACH,wBAAwB,IAAI,IAAI;IAmGhC;;;;OAIG;IACH,wBAAwB,IAAI,IAAI;CA0GjC"}