mirror of
https://github.com/Theodor-Springmann-Stiftung/musenalm.git
synced 2025-10-29 17:25:32 +00:00
45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
(function() {
|
|
/** @type {import("../htmx").HtmxInternalApi} */
|
|
var api
|
|
|
|
htmx.defineExtension('multi-swap', {
|
|
init: function(apiRef) {
|
|
api = apiRef
|
|
},
|
|
isInlineSwap: function(swapStyle) {
|
|
return swapStyle.indexOf('multi:') === 0
|
|
},
|
|
handleSwap: function(swapStyle, target, fragment, settleInfo) {
|
|
if (swapStyle.indexOf('multi:') === 0) {
|
|
var selectorToSwapStyle = {}
|
|
var elements = swapStyle.replace(/^multi\s*:\s*/, '').split(/\s*,\s*/)
|
|
|
|
elements.forEach(function(element) {
|
|
var split = element.split(/\s*:\s*/)
|
|
var elementSelector = split[0]
|
|
var elementSwapStyle = typeof (split[1]) !== 'undefined' ? split[1] : 'innerHTML'
|
|
|
|
if (elementSelector.charAt(0) !== '#') {
|
|
console.error("HTMX multi-swap: unsupported selector '" + elementSelector + "'. Only ID selectors starting with '#' are supported.")
|
|
return
|
|
}
|
|
|
|
selectorToSwapStyle[elementSelector] = elementSwapStyle
|
|
})
|
|
|
|
for (var selector in selectorToSwapStyle) {
|
|
var swapStyle = selectorToSwapStyle[selector]
|
|
var elementToSwap = fragment.querySelector(selector)
|
|
if (elementToSwap) {
|
|
api.oobSwap(swapStyle, elementToSwap, settleInfo)
|
|
} else {
|
|
console.warn("HTMX multi-swap: selector '" + selector + "' not found in source content.")
|
|
}
|
|
}
|
|
|
|
return true
|
|
}
|
|
}
|
|
})
|
|
})()
|