272 Commits

Author SHA1 Message Date
MichaelWest22
cee310e4d5
Handle not preventing link when inside htmx enabled element (#3396)
* Handle not preventing link when inside htmx enabled element

* Simplify shouldCancel and pass in eltToListenOn to solve from: issue without regressions

* move regex to local variable format
2025-09-07 12:09:05 -06:00
MichaelWest22
448db781ef
add back null check for no form in getRelatedFormData (#3394) 2025-07-27 09:34:50 -06:00
MichaelWest22
081adf8eeb
Fix ajax api body test (#3073)
fix api body test to not replace body and just check target
2025-07-21 21:42:30 -04:00
MichaelWest22
9d598f8d6e
implement reportValidity for reporting proper form validation errors behind config flag (#3372)
* implement reportvalidity behind feature flag

* add tests
2025-07-14 19:04:17 -06:00
Carson Gross
dc804932a7 fix formatting 2025-07-14 18:21:16 -06:00
MichaelWest22
28fae544c2
Cancel button with inner content form submit properly (#3368)
Co-authored-by: 1cg <469183+1cg@users.noreply.github.com>
2025-07-14 17:41:26 -06:00
Matteo Smaila
b0c87bf363
Bugfix: swap="outerHTML" on <div> with style attribute leaves htmx-swapping class behind (#3341)
* Added regression test for swap=outerHTML unexpected behavior, checked it failes, implemented initial fix in htmx.js that makes (all) test(s) run and pass.

* Renamed variable in my regression test to be more clear.

* I noticed I wasn't using the copies of the attributes I introduced.Tests were passing and I know why, though. This means I miss one more regression test for the bug in cloneAttributes.

* Added one more regression test for the fix in cloneAttributes.

* Made preservation of htmx- prefixed classes more robust in cloneAttributes after I noted they could as well be removed by mergeTo.setAttribute in the second forEach loop.

* Started as a typo-fix, ended up renaming regression tests to be more explicit.

* Started as a typo-fix, ended up renaming regression tests to be more explicit.

* Removed space that I accidentally added before.

* Applied changes as requested by MichaelWest22.

---------

Co-authored-by: Matteo Smaila <matteo.smaila@314softwaresolutions.com>
Co-authored-by: 1cg <469183+1cg@users.noreply.github.com>
2025-07-14 17:37:40 -06:00
MichaelWest22
8e489ef6ee
fix click events on elements wrapped by link don't cancel link navigation (#3357)
fix click events on elements wrapped by link doesn't cancel link navigation
2025-06-27 07:33:28 -06:00
MichaelWest22
dc71b317d0
throw targetError correctly when target invalid during retarget (#3335)
* throw targetError correctly when target invalid during retarget

* fix missing jsdoc return
2025-06-20 14:51:12 -06:00
MichaelWest22
84306ccf3d
Fix non chrome view transtions tests (#3338)
fix non chrome view transitions tests
2025-06-19 15:02:11 -06:00
MichaelWest22
c091b95fa3
Move currentPathForHistory to session storage (#3330)
* Move currentPathForHistory to session storage

* update test

* fix more sessionStorage from localStorage
2025-06-16 18:24:39 -05:00
MichaelWest22
c9e2bea954
Fix Modified click trigger on form elements prevent default behaviour (#3336)
Fix Modified click trigger on form elements prevent default behaviour of clicked element
2025-06-16 18:09:32 -05:00
MichaelWest22
7388d0c057
Move History storage to sessionStorage (#3305)
* Move History storage to sessionStorage and history path to window

* Fix type warnings

* Revert currentPathForHistory to move it to its own PR

* fix test
2025-06-16 18:08:34 -05:00
MichaelWest22
508e332544
Standardize history restore functions to use proper htmx swap functions (#3306)
* Improve history support and events

* Improve history event overrides

* Improve history support and events

* Improve history event overrides

* Update Documentation of new event changes

* Add event testing for updated events

* update event doco and rename to historyElt to be consistent

* Improve history support and events

* Improve history event overrides

* Update Documentation of new event changes

* Add event testing for updated events

* update event doco and rename to historyElt to be consistent

* Fix loc coverage test coverage

* Standardize history restore functions to use proper htmx swap functions

* Add test for hx-history-elt attribute

* Fix broken merge conflict resolution
2025-06-16 16:53:57 -06:00
MichaelWest22
859708c379
move delay and view transitions to inside swap function for api and history use (#3328)
* move delay and view transitions to inside swap function

* Fix indenting and add tests

* move delay and view transitions to inside swap function

* Fix indenting and add tests

* revert rollback of feat: handle 'unset'for HX-Reselect in swap function
2025-06-16 17:31:07 -05:00
Jeremiah Johnson
4184d1fd0c
fix(swap): apply swap delay in swap function instead of handleAjaxResponse (#2845)
* fix(swap): apply swap delay in swap function instead of handleAjaxResponse

* add swap delay test
2025-06-02 11:19:11 -06:00
Oliver Haas
6d238f3d61
Feat/hx reselect support unset (#3153)
feat: handle 'unset'for HX-Reselect in swap function (+ test)
2025-06-02 11:01:20 -06:00
Simon Hartley
075ed73799
Fix target value in htmx:targetError when inheritance has been used (#3178)
Co-authored-by: scrhartley <scrhartley@github.com>
2025-06-02 10:58:31 -06:00
MichaelWest22
5520566fc3
Add historyRestoreAsHxRequest config to optionally disable hx-request header from history restore requests (#3278)
* Added Config to optionally disable the breaking HX-Request change made recently

* fix broken resolved conflict
2025-04-24 14:21:23 -06:00
MichaelWest22
d3bcd787ba
proxy window.location for testing and extension overrides (#3283)
* proxy window.location for testing and extension overrides

* when not whe in test name
2025-04-24 13:55:27 -06:00
MichaelWest22
408850a08e
Additional Code Coverage (#3282)
* Improve loc coverage by removing dead paths caused by bad type checks and add some tests for other paths

* removed exception for https://github.com/microsoft/playwright/issues/5894 that was fixed in 2022 with webkit 16.0
2025-04-24 13:54:43 -06:00
MichaelWest22
21dc121fce
handle removing request lock on errors (#3284)
* handle removing request lock on errors

* Fixed non function verifyUrl tests and added tests for the double requests this PR fixes
2025-04-24 13:53:14 -06:00
MichaelWest22
24a0106f76
Update testing framework to web-test-runner and improve code coverage (#3273)
* Fix old npm dependencies

* implement web-test-runner tests for headless alongside Mocha browser tests

* Increase test and code coverage

* update to 100% coverage and impove eslint

* Update testing Doco

* revert all htmx changes and updates/disable tests needed

* fix browser mocha test

* Default testing to use playwrite only instead of puppeter

* playwright install fix

* Imporve test summary reporting

* flatten false looks closer to original
2025-04-17 17:55:43 -06:00
Geoffrey B. Eisenbarth
9fcb5c5c32
Enforce no-op on submit buttons with formmethod=dialog. (#3075)
* Enforce no-op on submit buttons with formmethod=dialog.

* Properly resolve referenced forms. (#3094)

* Properly resolve referenced forms.

* Clarify variable.

* Cast elt to avoid TS exceptions.

* Refactor for JSDoc.

* Clarify shouldCancel.

* Remove complicated JSDoc in favor of ts-ignore.

* More coverage for button scenarios.

* Use properties instead of matching.

* Mention reset button change.

* Mention formmethod=dialog change.
2025-01-09 15:22:36 -07:00
Geoffrey B. Eisenbarth
f46989b24a
Properly resolve referenced forms. (#3094)
* Properly resolve referenced forms.

* Clarify variable.

* Cast elt to avoid TS exceptions.

* Refactor for JSDoc.

* Clarify shouldCancel.

* Remove complicated JSDoc in favor of ts-ignore.

* More coverage for button scenarios.

* Use properties instead of matching.

* Mention reset button change.
2025-01-09 11:23:32 -07:00
Geoffrey B. Eisenbarth
cc2466b1f8
Cancel vanilla submits from <button[form]/>. (#3072) 2024-12-12 13:09:26 -07:00
Carson Gross
815c117088 comment out test that is breaking suite in browser 2024-12-11 15:06:03 -07:00
basvk
34dda10f9e
Do not execute hx-trigger="load" on re-initialization of an existing node (#2976)
* Do not execute hx-trigger="load" on re-initialization of an existing node

* simplify initNode firstInit logic
2024-12-11 14:27:34 -07:00
Simon Hartley
62969122f1
Fix illegal invocation for FormData proxy (#2997)
Fix illegal invocation for a FormData proxy returning a function looked-up via a symbol

Co-authored-by: shartley <scrhartley@github.com>
2024-11-07 10:15:07 -07:00
MichaelWest22
816fe6d161
ajax helper with no source or target defaults to body (#2948) 2024-10-20 16:38:41 -06:00
Carson Gross
1c4d378d03 fix formatting 2024-10-02 20:11:29 -06:00
Carson Gross
c7278c448e fix test (firefox, safari) 2024-10-02 20:09:11 -06:00
MichaelWest22
958fef20d9
Add shadowRoot host selector (#2866) 2024-10-02 19:46:11 -06:00
Eric Kwoka
b23b2f034e
🐛 Prevents erroring on null vals (#2799)
* 🐛 Prevents erroring on null vals

* 🚧 Applies same fix in FormProxy

* 🧪 Adds Test for null in FormDataProxy
2024-10-02 19:21:02 -06:00
MichaelWest22
b98e4f2b12
fix htmx.ajax defaulting to swap body when target not found (#2878)
* ajax helper handle no target

* allow source only targeting

* Add tests

* Handle source set but invalid target set

* Improve source logic

* missed #

* improve readiblity and add inline comment
2024-10-02 19:18:22 -06:00
Jackie Li
4916ce4d02
fix #2932: check parent is null for swap delete (#2933)
* fix #2932: check parent is null for swap

* fix test in swap when parent elt deleted
2024-10-02 19:08:39 -06:00
Vincent
326ff3b296
Fix focusin-based tests (#2861) 2024-09-01 14:22:04 -04:00
Carson Gross
2855c2c24e merge https://github.com/bigskysoftware/htmx/pull/2723 2024-08-29 12:00:00 -06:00
Ben Croker
cd6cdb275e
Ability to add options argument to event listener (#2836)
* Update htmx.js

* Update events.js

* Add fallback value

* Use JSDoc syntax

* Document parameter

* Only accept an object

* Revert change

* Add useCapture

* Update htmx.js

* Add `useCapture` test

* Clean up

* Revert addition of test
2024-08-29 10:36:24 -06:00
ehenighan
27fc37ce50
Issue #2676 - Tests for v2 to prevent regression of issue from v1 (#2829)
* Tests for v2 to prevent regression of issue from v1

* Linting

---------

Co-authored-by: Ed Henighan <ed.henighan@adi-uk.com>
2024-08-19 21:09:42 +02:00
Vincent
941e94fb98
Fix file upload through htmx.ajax (#2778)
* Fix File values handling in formDataFromObject

Fixes #2630

* Test file input upload + htmx.ajax file upload
2024-08-05 13:38:21 -06:00
Carson Gross
89dc9bea2e Merge remote-tracking branch 'origin/dev' into dev 2024-08-05 13:12:22 -06:00
Carson Gross
0ace4a731c scan through all siblings (not just until the first non-element) when doing an outerHTML swap to add things to settle
fixes https://github.com/bigskysoftware/htmx/issues/2787
2024-08-05 13:12:13 -06:00
Ben Croker
a44a1b3c34
Add ability to trigger an event on another element using HX-Trigger response header (#2768)
* Update htmx.js

* Update htmx.js

* Update headers.js

* Update htmx.js

* Update htmx.js

* Update htmx.js

* Update hx-trigger.md
2024-07-29 10:33:24 -06:00
Vincent
bec3657a81
Fix: values order with non-GET requests (#2749)
Fix values order with non-GET requests #2703
2024-07-26 00:22:59 -04:00
Carson Gross
8928efc40a restore tests and dynamic hx-on behavior 2024-05-16 14:16:43 -06:00
Carson Gross
20b42aaf88 Merge branch 'master' into dev
# Conflicts:
#	src/htmx.d.ts
#	src/htmx.js
#	test/core/security.js
#	www/content/docs.md
2024-05-16 12:50:13 -06:00
Carson Gross
b991f20c3a make hx-on respect the hx-disable attribute 2024-04-25 09:49:50 -06:00
Carson Gross
2be7054525 lint 2024-04-17 05:45:40 -06:00
Carson Gross
01cb5e0d8d support hx-on in shadowroot 2024-04-17 05:25:28 -06:00