Files
integreat/resources/public/js/alpine-vals.js
2024-03-21 21:09:18 -07:00

29 lines
1.1 KiB
JavaScript

document.addEventListener('alpine:init', () => {
Alpine.directive('hx-val', (el, { value, expression }, { evaluateLater, effect, cleanup, evaluate }) => {
var config = function(evt) {
evt.detail.parameters[value] = evaluate(expression); // add a new parameter into the request
}
el.addEventListener('htmx:configRequest', config);
cleanup(() => {
el.removeEventListener('htmx:configRequest', config);
})
})
Alpine.directive('dispatch', (el, { value, expression }, { evaluateLater, effect, cleanup, evaluate }) => {
let dependent_properties = evaluateLater(expression)
effect(() => {
dependent_properties(props => {
el.dispatchEvent(
new CustomEvent(value, {
props,
bubbles: true,
// Allows events to pass the shadow DOM barrier.
composed: true,
cancelable: true,
})
)
})
})
})
})