Skip to content

Commit e783c88

Browse files
committed
move repeat logic on HX-Retarget header out to its own function.
1 parent 8ec48d9 commit e783c88

1 file changed

Lines changed: 21 additions & 14 deletions

File tree

src/htmx.js

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4695,6 +4695,23 @@ var htmx = (function() {
46954695
}
46964696
}
46974697

4698+
/**
4699+
* Updates the responseInfo's target property if an HX-Retarget header is present
4700+
*
4701+
* @param {XMLHttpRequest} xhr
4702+
* @param {HtmxResponseInfo} responseInfo
4703+
* @param {Element} elt
4704+
*/
4705+
function handleRetargetHeader(xhr, responseInfo, elt) {
4706+
if (hasHeader(xhr, /HX-Retarget:/i)) {
4707+
if (xhr.getResponseHeader("HX-Retarget") === "this") {
4708+
responseInfo.target = elt
4709+
} else {
4710+
responseInfo.target = asElement(querySelectorExt(elt, xhr.getResponseHeader("HX-Retarget")))
4711+
}
4712+
}
4713+
}
4714+
46984715
/**
46994716
* @param {Element} elt
47004717
* @param {HtmxResponseInfo} responseInfo
@@ -4743,13 +4760,8 @@ var htmx = (function() {
47434760
return
47444761
}
47454762

4746-
if (hasHeader(xhr, /HX-Retarget:/i)) {
4747-
if (xhr.getResponseHeader('HX-Retarget') === 'this') {
4748-
responseInfo.target = elt
4749-
} else {
4750-
responseInfo.target = asElement(querySelectorExt(elt, xhr.getResponseHeader('HX-Retarget')))
4751-
}
4752-
}
4763+
// handle retargeting before determining history updates/resolving response handling
4764+
handleRetargetHeader(xhr, responseInfo, elt)
47534765

47544766
const historyUpdate = determineHistoryUpdates(elt, responseInfo)
47554767

@@ -4767,13 +4779,8 @@ var htmx = (function() {
47674779
}
47684780

47694781
// response headers override response handling config
4770-
if (hasHeader(xhr, /HX-Retarget:/i)) {
4771-
if (xhr.getResponseHeader('HX-Retarget') === 'this') {
4772-
responseInfo.target = elt
4773-
} else {
4774-
responseInfo.target = asElement(querySelectorExt(elt, xhr.getResponseHeader('HX-Retarget')))
4775-
}
4776-
}
4782+
handleRetargetHeader(xhr, responseInfo, elt)
4783+
47774784
if (hasHeader(xhr, /HX-Reswap:/i)) {
47784785
swapOverride = xhr.getResponseHeader('HX-Reswap')
47794786
}

0 commit comments

Comments
 (0)