summaryrefslogtreecommitdiffstatshomepage
path: root/src/ext/sse.js
diff options
context:
space:
mode:
authorBen Pate <ben@pate.org>2021-11-17 20:01:40 -0700
committerBen Pate <ben@pate.org>2021-11-17 20:01:40 -0700
commit6b86e15f39ecedbfd5ac4de2fd4ed665f6d738a9 (patch)
tree95955cc19da0bf1acd6fbead820f7e067699c8f4 /src/ext/sse.js
parente23610b191788d3c34a3b42ac258115a097da734 (diff)
downloadhtmx-6b86e15f39ecedbfd5ac4de2fd4ed665f6d738a9.tar.gz
htmx-6b86e15f39ecedbfd5ac4de2fd4ed665f6d738a9.zip
Update for multiple event names
+ tests
Diffstat (limited to 'src/ext/sse.js')
-rw-r--r--src/ext/sse.js46
1 files changed, 26 insertions, 20 deletions
diff --git a/src/ext/sse.js b/src/ext/sse.js
index 24416ec2..cb2a3d25 100644
--- a/src/ext/sse.js
+++ b/src/ext/sse.js
@@ -80,6 +80,10 @@ This extension adds support for Server Sent Events to htmx. See /www/extensions
*/
function createEventSourceOnElement(parent, retryCount) {
+ if (parent == null) {
+ return;
+ }
+
var internalData = api.getInternalData(parent);
// get URL from element's attribute
@@ -117,24 +121,27 @@ This extension adds support for Server Sent Events to htmx. See /www/extensions
// Add message handlers for every `sse-swap` attribute
queryAttributeOnThisOrChildren(parent, "sse-swap").forEach(function(child) {
- var sseEventName = api.getAttributeValue(child, "sse-swap");
-
- var listener = function(event) {
-
- // If the parent is missing then close SSE and remove listener
- if (maybeCloseSSESource(parent)) {
- source.removeEventListener(sseEventName, listener);
- return;
- }
-
- // swap the response into the DOM and trigger a notification
- swap(child, event.data);
- api.triggerEvent(parent, "htmx:sseMessage", event);
- };
-
- // Register the new listener
- api.getInternalData(parent).sseEventListener = listener;
- source.addEventListener(sseEventName, listener);
+ var sseEventNames = api.getAttributeValue(child, "sse-swap").split(",");
+
+ for (var i = 0 ; i < sseEventNames.length ; i++) {
+ var sseEventName = sseEventNames[i].trim();
+ var listener = function(event) {
+
+ // If the parent is missing then close SSE and remove listener
+ if (maybeCloseSSESource(parent)) {
+ source.removeEventListener(sseEventName, listener);
+ return;
+ }
+
+ // swap the response into the DOM and trigger a notification
+ swap(child, event.data);
+ api.triggerEvent(parent, "htmx:sseMessage", event);
+ };
+
+ // Register the new listener
+ api.getInternalData(parent).sseEventListener = listener;
+ source.addEventListener(sseEventName, listener);
+ }
});
// Add message handlers for every `hx-trigger="sse:*"` attribute
@@ -254,11 +261,10 @@ This extension adds support for Server Sent Events to htmx. See /www/extensions
});
settleInfo.elts.forEach(function (elt) {
- console.log(elt.classList);
if (elt.classList) {
elt.classList.remove(htmx.config.settlingClass);
}
- triggerEvent(elt, 'htmx:afterSettle', responseInfo);
+ api.triggerEvent(elt, 'htmx:afterSettle');
});
}
}