mirror of
https://github.com/bigskysoftware/htmx.git
synced 2025-10-02 15:25:26 +00:00
Triggers working
This commit is contained in:
parent
a1113ec111
commit
dd5b92b46a
@ -53,7 +53,7 @@ This extension adds support for Server Sent Events to htmx. See /www/extensions
|
||||
|
||||
source.onerror = function (err) {
|
||||
api.triggerErrorEvent(parent, "htmx:sseError", {error:err, source:source});
|
||||
maybeCloseSSESource(parent);
|
||||
maybeCloseSSESource(api, parent);
|
||||
};
|
||||
|
||||
api.getInternalData(parent).sseEventSource = source;
|
||||
@ -79,7 +79,7 @@ This extension adds support for Server Sent Events to htmx. See /www/extensions
|
||||
// Register the new listener
|
||||
api.getInternalData(parent).sseEventListener = listener;
|
||||
source.addEventListener(sseEventName, listener);
|
||||
})
|
||||
});
|
||||
|
||||
// Add message handlers for every `hx-trigger="sse:*"` attribute
|
||||
queryAttributeOnThisOrChildren(api, parent, "hx-trigger").forEach(function(child) {
|
||||
@ -100,13 +100,13 @@ This extension adds support for Server Sent Events to htmx. See /www/extensions
|
||||
}
|
||||
|
||||
// Trigger events to be handled by the rest of htmx
|
||||
api.triggerEvent(child, sseEventName, event)
|
||||
api.triggerEvent(child, "htmx:sseMessage", event)
|
||||
htmx.trigger(child, sseEventName, event)
|
||||
htmx.trigger(child, "htmx:sseMessage", event)
|
||||
}
|
||||
|
||||
// Register the new listener
|
||||
api.getInternalData(parent).sseEventListener = listener;
|
||||
source.addEventListener(sseEventName, listener);
|
||||
source.addEventListener(sseEventName.slice(4), listener);
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -882,8 +882,6 @@ return (function () {
|
||||
every.eventFilter = eventFilter;
|
||||
}
|
||||
triggerSpecs.push(every);
|
||||
} else if (trigger.indexOf("sse:") === 0) {
|
||||
triggerSpecs.push({trigger: 'sse', sseEvent: trigger.substr(4)});
|
||||
} else {
|
||||
var triggerSpec = {trigger: trigger};
|
||||
var eventFilter = maybeGenerateConditional(elt, tokens, "event");
|
||||
|
53
test/manual/sse-triggers.html
Normal file
53
test/manual/sse-triggers.html
Normal file
@ -0,0 +1,53 @@
|
||||
<html>
|
||||
<head>
|
||||
<script src="../../src/htmx.js"></script>
|
||||
<script src="../../src/ext/sse.js"></script>
|
||||
<script>
|
||||
htmx.createEventSource = function(url){
|
||||
return new EventSource(url, {withCredentials:false})
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
*{
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
.container {
|
||||
padding: 10px;
|
||||
border: solid 1px gray;
|
||||
margin-bottom: 20px;
|
||||
background-color:white;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight:bold;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="page" hx-ext="sse" sse-url="http://localhost/posts.html?types=event1%2cevent2%2cevent3%2cevent4">
|
||||
<h3>Multiple Listeners. message only</h3>
|
||||
<div id="first" class="container" hx-get="http://localhost/page/random" hx-trigger="sse:event1">Waiting for Posts in Event1 channel...</div>
|
||||
<div class="container" hx-get="http://localhost/page/random" hx-trigger="sse:event2">Waiting for Posts in Event2 channel...</div>
|
||||
<div class="container" hx-get="http://localhost/page/random" hx-trigger="sse:event3">Waiting for Posts in Event3 channel...</div>
|
||||
<div class="container" hx-get="http://localhost/page/random" hx-trigger="sse:event4">Waiting for Posts in Event4 channel...</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
<!--script>
|
||||
setInterval(function() {
|
||||
htmx.trigger("#first", "sse:event1")
|
||||
/*
|
||||
var e = new Event("event1")
|
||||
var id = document.getElementById("first")
|
||||
id.dispatchEvent(e)
|
||||
console.log("SENT ***************************",id, e)
|
||||
*/
|
||||
}, 500)
|
||||
</script-->
|
||||
</html>
|
Loading…
x
Reference in New Issue
Block a user