diff options
author | Ben Pate <ben@pate.org> | 2021-11-17 20:01:40 -0700 |
---|---|---|
committer | Ben Pate <ben@pate.org> | 2021-11-17 20:01:40 -0700 |
commit | 6b86e15f39ecedbfd5ac4de2fd4ed665f6d738a9 (patch) | |
tree | 95955cc19da0bf1acd6fbead820f7e067699c8f4 /src/ext/sse.js | |
parent | e23610b191788d3c34a3b42ac258115a097da734 (diff) | |
download | htmx-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.js | 46 |
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'); }); } } |