Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/htmx.js
Original file line number Diff line number Diff line change
Expand Up @@ -1413,7 +1413,7 @@ var htmx = (function() {
* @param {Element} mergeFrom
*/
function cloneAttributes(mergeTo, mergeFrom) {
forEach(mergeTo.attributes, function(attr) {
forEach(Array.from(mergeTo.attributes), function(attr) {
if (!mergeFrom.hasAttribute(attr.name) && shouldSettleAttribute(attr.name)) {
mergeTo.removeAttribute(attr.name)
}
Expand Down
30 changes: 30 additions & 0 deletions test/core/regressions.js
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,35 @@ describe('Core htmx Regression Tests', function() {
byId('datefield').click()
})

it('swap=outerHTML clears htmx-swapping class when old node has a style attribute and no class', function(done) {
this.server.respondWith('GET', '/test', '<div id="test-div">Test</div>')

var btn = make('<button hx-get="/test" hx-target="#test-div" hx-swap="outerHTML">Click Me!</button>')
var div = make('<div id="test-div" style></div>')
btn.click()

this.server.respond()

var div = byId('test-div')
const isSwappingClassStillThere = div.classList.contains('htmx-swapping')
isSwappingClassStillThere.should.equal(false)
done()
})

it('swap=outerHTML won\'t carry over user-defined classes when old node has a style attribute before the class attribute', function(done) {
this.server.respondWith('GET', '/test', '<div id="test-div">Test</div>')

var btn = make('<button hx-get="/test" hx-target="#test-div" hx-swap="outerHTML">Click Me!</button>')
var div = make('<div id="test-div" style class="my-class"></div>')
btn.click()

this.server.respond()

var div = byId('test-div')
div.classList.length.should.equal(0)
done()
})

it('a button clicked inside an htmx enabled link will prevent the link from navigating on click', function(done) {
var defaultPrevented = 'unset'
var link = make('<a href="/foo" hx-get="/foo"><button>test</button></a>')
Expand Down Expand Up @@ -333,4 +362,5 @@ describe('Core htmx Regression Tests', function() {

button.click()
})

})