@mypolis.eu/action-controller 4.0.0 → 4.1.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.
package/dist/controller.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { html, LitElement } from "lit";
|
|
2
2
|
import { parseActions } from "./action";
|
|
3
|
-
import { parseAttributes } from "./attributes";
|
|
4
3
|
import { findElements, targetKey } from "./query";
|
|
5
4
|
export class Controller extends LitElement {
|
|
6
5
|
#handlers = new Map();
|
|
@@ -28,26 +27,16 @@ export class Controller extends LitElement {
|
|
|
28
27
|
});
|
|
29
28
|
}
|
|
30
29
|
disconnectedCallback() {
|
|
31
|
-
super.disconnectedCallback();
|
|
32
30
|
// Clean up existing listeners
|
|
33
31
|
this.#cleanupActions();
|
|
34
32
|
// Stop observing
|
|
35
33
|
this.#observer.disconnect();
|
|
34
|
+
// Free the custom element
|
|
35
|
+
super.disconnectedCallback();
|
|
36
36
|
}
|
|
37
37
|
render() {
|
|
38
38
|
return html `<slot />`;
|
|
39
39
|
}
|
|
40
|
-
eventDetail(event) {
|
|
41
|
-
// handle customevent
|
|
42
|
-
if (event instanceof CustomEvent && event.detail) {
|
|
43
|
-
return event.detail;
|
|
44
|
-
}
|
|
45
|
-
// handle data attributes
|
|
46
|
-
const target = event.target;
|
|
47
|
-
if (!target)
|
|
48
|
-
return {};
|
|
49
|
-
return parseAttributes(target);
|
|
50
|
-
}
|
|
51
40
|
#handleAction(event, element, action) {
|
|
52
41
|
// look for the nearest controller matching the action's controller name
|
|
53
42
|
const controller = element.closest(action.controller);
|
|
@@ -73,14 +62,34 @@ export class Controller extends LitElement {
|
|
|
73
62
|
if (action.controller !== this.tagName.toLowerCase())
|
|
74
63
|
continue;
|
|
75
64
|
const handler = (event) => this.#handleAction(event, element, action);
|
|
76
|
-
element
|
|
77
|
-
|
|
65
|
+
let targetNode = element;
|
|
66
|
+
let eventName = action.event;
|
|
67
|
+
if (action.event.endsWith("@window")) {
|
|
68
|
+
eventName = action.event.replace("@window", "");
|
|
69
|
+
targetNode = window;
|
|
70
|
+
}
|
|
71
|
+
else if (action.event.endsWith("@document")) {
|
|
72
|
+
eventName = action.event.replace("@document", "");
|
|
73
|
+
targetNode = document;
|
|
74
|
+
}
|
|
75
|
+
targetNode.addEventListener(eventName, handler);
|
|
76
|
+
handlers.push({ event: eventName, handler, target: targetNode });
|
|
78
77
|
}
|
|
79
78
|
if (handlers.length) {
|
|
80
79
|
this.#handlers.set(element, handlers);
|
|
81
80
|
}
|
|
82
81
|
});
|
|
83
82
|
}
|
|
83
|
+
#cleanupActions() {
|
|
84
|
+
for (const [element, handlers] of this.#handlers.entries()) {
|
|
85
|
+
for (const { event, handler, target } of handlers) {
|
|
86
|
+
// Use the stored target (window/document), or default to the element
|
|
87
|
+
const targetNode = target || element;
|
|
88
|
+
targetNode.removeEventListener(event, handler);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
this.#handlers.clear();
|
|
92
|
+
}
|
|
84
93
|
#updateQueries() {
|
|
85
94
|
if (!this[targetKey] || this[targetKey].length === 0)
|
|
86
95
|
return;
|
|
@@ -112,13 +121,5 @@ export class Controller extends LitElement {
|
|
|
112
121
|
this.requestUpdate();
|
|
113
122
|
}
|
|
114
123
|
}
|
|
115
|
-
#cleanupActions() {
|
|
116
|
-
for (const [element, handlers] of this.#handlers.entries()) {
|
|
117
|
-
for (const { event, handler } of handlers) {
|
|
118
|
-
element.removeEventListener(event, handler);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
this.#handlers.clear();
|
|
122
|
-
}
|
|
123
124
|
}
|
|
124
125
|
//# sourceMappingURL=controller.js.map
|
package/dist/controller.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,UAAU,EAAC,MAAM,KAAK,CAAC;AACrC,OAAO,EAAC,YAAY,EAAc,MAAM,UAAU,CAAC;AACnD,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,UAAU,EAAC,MAAM,KAAK,CAAC;AACrC,OAAO,EAAC,YAAY,EAAc,MAAM,UAAU,CAAC;AACnD,OAAO,EAAC,YAAY,EAAU,SAAS,EAAC,MAAM,SAAS,CAAC;AAQxD,MAAM,OAAO,UAAW,SAAQ,UAAU;IACzC,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC1C,SAAS,CAAmB;IAE5B,CAAC,SAAS,CAAC,CAAY;IAEvB;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,GAAG,EAAE;YAC1C,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,8BAA8B;YACtD,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,oBAAoB;YAC3C,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,sBAAsB;QAC9C,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,iBAAiB;QAChB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,gBAAgB;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,0BAA0B;QAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE;YAC5B,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,aAAa,EAAE,aAAa,CAAC;SAC/C,CAAC,CAAC;IACJ,CAAC;IAED,oBAAoB;QACnB,8BAA8B;QAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,iBAAiB;QACjB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC5B,0BAA0B;QAC1B,KAAK,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM;QACL,OAAO,IAAI,CAAA,UAAU,CAAC;IACvB,CAAC;IAED,aAAa,CAAC,KAAY,EAAE,OAAgB,EAAE,MAAc;QAC3D,wEAAwE;QACxE,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAc,MAAM,CAAC,UAAU,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,UAAU,YAAY,CAAC,CAAC;YAC1D,OAAO;QACR,CAAC;QAED,6DAA6D;QAC7D,MAAM,MAAM,GAAI,UAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,MAAM,4BAA4B,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACrF,OAAO;QACR,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED,cAAc;QACb,YAAY,CAAc,IAAI,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACpE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YACnC,IAAI,CAAC,GAAG;gBAAE,OAAO;YAEjB,MAAM,QAAQ,GAAc,EAAE,CAAC;YAE/B,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxC,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;oBAAE,SAAS;gBAE/D,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBAE7E,IAAI,UAAU,GAAgB,OAAO,CAAC;gBACtC,IAAI,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBAE7B,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACtC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;oBAChD,UAAU,GAAG,MAAM,CAAC;gBACrB,CAAC;qBAAM,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/C,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;oBAClD,UAAU,GAAG,QAAQ,CAAC;gBACvB,CAAC;gBAED,UAAU,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAEhD,QAAQ,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC;YAChE,CAAC;YAED,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACrB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACvC,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,eAAe;QACd,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,KAAK,MAAM,EAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAC,IAAI,QAAQ,EAAE,CAAC;gBACjD,qEAAqE;gBACrE,MAAM,UAAU,GAAG,MAAM,IAAI,OAAO,CAAC;gBACrC,UAAU,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAChD,CAAC;QACF,CAAC;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,cAAc;QACb,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE7D,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACvC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;YACjC,MAAM,OAAO,GAAI,IAAY,CAAC,WAAW,CAAC,CAAC;YAE3C,IAAI,UAAU,GAAG,KAAK,CAAC;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChC,MAAM,eAAe,GAAG,OAAgC,CAAC;gBACzD,IACC,CAAC,eAAe;oBAChB,eAAe,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM;oBAC7C,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EACtD,CAAC;oBACF,UAAU,GAAG,IAAI,CAAC;gBACnB,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;oBAC7B,UAAU,GAAG,IAAI,CAAC;gBACnB,CAAC;YACF,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,IAAY,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC;gBACzC,WAAW,GAAG,IAAI,CAAC;YACpB,CAAC;QACF,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,aAAa,EAAE,CAAC;QACtB,CAAC;IACF,CAAC;CACD"}
|
|
@@ -7,6 +7,5 @@ export declare class Controller extends LitElement {
|
|
|
7
7
|
connectedCallback(): void;
|
|
8
8
|
disconnectedCallback(): void;
|
|
9
9
|
render(): import("lit").TemplateResult<1>;
|
|
10
|
-
eventDetail<T extends Record<string, any>>(event: CustomEvent<T> | Event): Partial<T>;
|
|
11
10
|
}
|
|
12
11
|
//# sourceMappingURL=controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAC,MAAM,KAAK,CAAC;AAErC,OAAO,EAAe,MAAM,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAQxD,qBAAa,UAAW,SAAQ,UAAU;;IAIzC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;;IAWvB,iBAAiB;IAgBjB,oBAAoB;IASpB,MAAM;CAuGN"}
|