@livetemplate/client 0.8.12 → 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 +7 -5
  2. package/dist/dom/directives.d.ts.map +1 -1
  3. package/dist/dom/directives.js +31 -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 +3 -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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@livetemplate/client",
3
- "version": "0.8.12",
3
+ "version": "0.8.13",
4
4
  "description": "TypeScript client for LiveTemplate tree-based updates",
5
5
  "main": "dist/livetemplate-client.js",
6
6
  "browser": "dist/livetemplate-client.browser.js",
@@ -1,11 +0,0 @@
1
- import type { Logger } from "../utils/logger";
2
- /**
3
- * Manages client-side modal interactions for LiveTemplate.
4
- */
5
- export declare class ModalManager {
6
- private readonly logger;
7
- constructor(logger: Logger);
8
- open(modalId: string): void;
9
- close(modalId: string): void;
10
- }
11
- //# sourceMappingURL=modal-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modal-manager.d.ts","sourceRoot":"","sources":["../../dom/modal-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C;;GAEG;AACH,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAE3C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAiD3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAc7B"}
@@ -1,62 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ModalManager = void 0;
4
- /**
5
- * Manages client-side modal interactions for LiveTemplate.
6
- */
7
- class ModalManager {
8
- constructor(logger) {
9
- this.logger = logger;
10
- }
11
- open(modalId) {
12
- const modal = document.getElementById(modalId);
13
- if (!modal) {
14
- this.logger.warn(`Modal with id="${modalId}" not found`);
15
- return;
16
- }
17
- modal.removeAttribute("hidden");
18
- modal.style.display = "flex";
19
- modal.setAttribute("aria-hidden", "false");
20
- modal.dispatchEvent(new CustomEvent("lvt:modal-opened", { bubbles: true }));
21
- this.logger.info(`Opened modal: ${modalId}`);
22
- const firstInput = modal.querySelector("input, textarea, select");
23
- if (firstInput) {
24
- setTimeout(() => {
25
- const activeElement = document.activeElement;
26
- const isVisible = (element) => {
27
- if (!element) {
28
- return false;
29
- }
30
- if (element === document.body) {
31
- return true;
32
- }
33
- // Use offsetParent and bounding rects to determine visibility without hitting layout too hard.
34
- if (element.offsetParent !== null) {
35
- return true;
36
- }
37
- return element.getClientRects().length > 0;
38
- };
39
- const shouldMoveFocus = !activeElement ||
40
- !modal.contains(activeElement) ||
41
- !isVisible(activeElement);
42
- if (shouldMoveFocus) {
43
- firstInput.focus();
44
- }
45
- }, 100);
46
- }
47
- }
48
- close(modalId) {
49
- const modal = document.getElementById(modalId);
50
- if (!modal) {
51
- this.logger.warn(`Modal with id="${modalId}" not found`);
52
- return;
53
- }
54
- modal.setAttribute("hidden", "");
55
- modal.style.display = "none";
56
- modal.setAttribute("aria-hidden", "true");
57
- modal.dispatchEvent(new CustomEvent("lvt:modal-closed", { bubbles: true }));
58
- this.logger.info(`Closed modal: ${modalId}`);
59
- }
60
- }
61
- exports.ModalManager = ModalManager;
62
- //# sourceMappingURL=modal-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modal-manager.js","sourceRoot":"","sources":["../../dom/modal-manager.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,YAAY;IACvB,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,IAAI,CAAC,OAAe;QAClB,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,OAAO,aAAa,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC7B,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC3C,KAAK,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE5E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;QAE7C,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CACpC,yBAAyB,CACJ,CAAC;QACxB,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,GAAG,EAAE;gBACd,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAmC,CAAC;gBACnE,MAAM,SAAS,GAAG,CAAC,OAA2B,EAAW,EAAE;oBACzD,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,OAAO,KAAK,CAAC;oBACf,CAAC;oBAED,IAAI,OAAO,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;wBAC9B,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,+FAA+F;oBAC/F,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;wBAClC,OAAO,IAAI,CAAC;oBACd,CAAC;oBAED,OAAO,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC7C,CAAC,CAAC;gBAEF,MAAM,eAAe,GACnB,CAAC,aAAa;oBACd,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC9B,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAE5B,IAAI,eAAe,EAAE,CAAC;oBACpB,UAAU,CAAC,KAAK,EAAE,CAAC;gBACrB,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,OAAO,aAAa,CAAC,CAAC;YACzD,OAAO;QACT,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACjC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC7B,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE5E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;CACF;AAlED,oCAkEC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=modal-manager.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modal-manager.test.d.ts","sourceRoot":"","sources":["../../tests/modal-manager.test.ts"],"names":[],"mappings":""}
@@ -1,80 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const modal_manager_1 = require("../dom/modal-manager");
4
- const logger_1 = require("../utils/logger");
5
- describe("ModalManager", () => {
6
- let consoleLogSpy;
7
- let consoleWarnSpy;
8
- beforeEach(() => {
9
- consoleLogSpy = jest.spyOn(console, "log").mockImplementation(() => { });
10
- consoleWarnSpy = jest.spyOn(console, "warn").mockImplementation(() => { });
11
- document.body.innerHTML = "";
12
- });
13
- afterEach(() => {
14
- consoleLogSpy.mockRestore();
15
- consoleWarnSpy.mockRestore();
16
- jest.useRealTimers();
17
- document.body.innerHTML = "";
18
- });
19
- it("opens a modal and focuses the first input when no element is active", () => {
20
- jest.useFakeTimers();
21
- const modal = document.createElement("div");
22
- modal.id = "test-modal";
23
- modal.setAttribute("hidden", "");
24
- modal.style.display = "none";
25
- modal.setAttribute("aria-hidden", "true");
26
- const input = document.createElement("input");
27
- input.type = "text";
28
- modal.appendChild(input);
29
- document.body.appendChild(modal);
30
- const manager = new modal_manager_1.ModalManager((0, logger_1.createLogger)({ scope: "ModalManagerTest", level: "silent" }));
31
- const openedListener = jest.fn();
32
- modal.addEventListener("lvt:modal-opened", openedListener);
33
- manager.open("test-modal");
34
- expect(modal.hasAttribute("hidden")).toBe(false);
35
- expect(modal.style.display).toBe("flex");
36
- expect(modal.getAttribute("aria-hidden")).toBe("false");
37
- expect(openedListener).toHaveBeenCalled();
38
- jest.runAllTimers();
39
- expect(document.activeElement).toBe(input);
40
- });
41
- it("respects the current focus when a visible element inside the modal is already active", () => {
42
- jest.useFakeTimers();
43
- const modal = document.createElement("div");
44
- modal.id = "test-modal-visible";
45
- modal.setAttribute("hidden", "");
46
- modal.style.display = "none";
47
- modal.setAttribute("aria-hidden", "true");
48
- const firstInput = document.createElement("input");
49
- firstInput.type = "text";
50
- const secondInput = document.createElement("input");
51
- secondInput.type = "text";
52
- // Emulate layout visibility checks performed in ModalManager.
53
- Object.defineProperty(secondInput, "offsetParent", {
54
- get: () => modal,
55
- });
56
- secondInput.getClientRects = () => [{ width: 10, height: 10 }];
57
- modal.appendChild(firstInput);
58
- modal.appendChild(secondInput);
59
- document.body.appendChild(modal);
60
- const manager = new modal_manager_1.ModalManager((0, logger_1.createLogger)({ scope: "ModalManagerTest", level: "silent" }));
61
- manager.open("test-modal-visible");
62
- secondInput.focus();
63
- jest.runAllTimers();
64
- expect(document.activeElement).toBe(secondInput);
65
- });
66
- it("closes a modal and emits the closed event", () => {
67
- const modal = document.createElement("div");
68
- modal.id = "test-modal-close";
69
- document.body.appendChild(modal);
70
- const manager = new modal_manager_1.ModalManager((0, logger_1.createLogger)({ scope: "ModalManagerTest", level: "silent" }));
71
- const closedListener = jest.fn();
72
- modal.addEventListener("lvt:modal-closed", closedListener);
73
- manager.close("test-modal-close");
74
- expect(modal.hasAttribute("hidden")).toBe(true);
75
- expect(modal.style.display).toBe("none");
76
- expect(modal.getAttribute("aria-hidden")).toBe("true");
77
- expect(closedListener).toHaveBeenCalled();
78
- });
79
- });
80
- //# sourceMappingURL=modal-manager.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"modal-manager.test.js","sourceRoot":"","sources":["../../tests/modal-manager.test.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Check if an element has lvt-confirm attribute and prompt user if needed.
3
- * Returns true if action should proceed, false if cancelled.
4
- */
5
- export declare function checkLvtConfirm(element: HTMLElement): boolean;
6
- /**
7
- * Extract lvt-data-* attributes from an element.
8
- * lvt-data-id="123" becomes { id: "123" }
9
- * lvt-data-user-name="john" becomes { "user-name": "john" }
10
- */
11
- export declare function extractLvtData(element: HTMLElement): Record<string, string>;
12
- //# sourceMappingURL=confirm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"confirm.d.ts","sourceRoot":"","sources":["../../utils/confirm.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAQ7D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAa3E"}
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkLvtConfirm = checkLvtConfirm;
4
- exports.extractLvtData = extractLvtData;
5
- /**
6
- * Check if an element has lvt-confirm attribute and prompt user if needed.
7
- * Returns true if action should proceed, false if cancelled.
8
- */
9
- function checkLvtConfirm(element) {
10
- if (element.hasAttribute("lvt-confirm")) {
11
- const confirmMessage = element.getAttribute("lvt-confirm");
12
- if (confirmMessage && !confirm(confirmMessage)) {
13
- return false; // User cancelled
14
- }
15
- }
16
- return true; // Proceed
17
- }
18
- /**
19
- * Extract lvt-data-* attributes from an element.
20
- * lvt-data-id="123" becomes { id: "123" }
21
- * lvt-data-user-name="john" becomes { "user-name": "john" }
22
- */
23
- function extractLvtData(element) {
24
- const data = {};
25
- const attributes = element.attributes;
26
- for (let i = 0; i < attributes.length; i++) {
27
- const attr = attributes[i];
28
- if (attr.name.startsWith("lvt-data-")) {
29
- const key = attr.name.substring(9); // Remove "lvt-data-" prefix
30
- data[key] = attr.value;
31
- }
32
- }
33
- return data;
34
- }
35
- //# sourceMappingURL=confirm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../utils/confirm.ts"],"names":[],"mappings":";;AAIA,0CAQC;AAOD,wCAaC;AAhCD;;;GAGG;AACH,SAAgB,eAAe,CAAC,OAAoB;IAClD,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;QAC3D,IAAI,cAAc,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC,CAAC,iBAAiB;QACjC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,CAAC,UAAU;AACzB,CAAC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,OAAoB;IACjD,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;YAChE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}