* Update parseInterval to handle "0" correctly
When a parameter like "0ms" is passed in to parseInterval it gets parsed to 0.
Previously this would result in a return value of "undefined" because 0 is falsy
and thus the `return 0 || undefined` statements return undefined.
The purpose of the form `parseFloat(str) || undefined` was to return "undefined" if
parseFloat failed (parseFloat returns NaN, a falsy value, if it can't parse its
argument). Unfortunately, as mentioned, parseFloat can also succeed and return a
falsy value -- when the argument is "0" (or "0.0", etc.). So the new code, rather
than depending on the falsiness of the result of parseFloat, explicitly checks for
a NaN.
* Adds some semicolons
Adds some semicolons to parseInterval (and tests) for consistency.
* Add one more parseInterval test for "0"
Adds test test to make sure parseInterval works on "0".
* Adds functional tests for every, swap, settle, throttle, and delay
* Explcitly check that setTimeout values are > 0
These values come from user settings that are read from parseInterval,
so they could be a number or undefined.
If the value being checked is > 0 setTimeout will be called with some
associated function. If the value is 0 or 'undefined' the associated function
will be called immediately ('undefined' is not greater than 0).
* Change '!== undefined' to '> 0'
`pollInterval !== undefined` is a subtly different conditional than just `pollInterval` or `pollInterval > 0` (which are equivalent). Changes the conditional to `pollInterval > 0` so as to not change the behavior but also be more explicit in the test.
* allow user to override Content-Type header
* reorder the code so it won't use userSetContentType variable
* remove userSetContentType
* clarification
* remove unrelated changes
---------
Co-authored-by: gbourant <root@gbourant.com>
* Current behavior testing
Testing current library behavior
* Test should remove correct handler
* Add question in htmx:confirm event detail
* Allow skipping window.confirm
* Additional test without hx-confirm value
* Wrap htmx.off in finally
* More correct assertion in case of no calls to confirm
* Remove erroneously added formatting
* Remove erroneously added formatting
* Documentation, fix loop
---------
Co-authored-by: mat <matt@techspace.asia>
* Make htmx IE11 compatible again + tests IE11 compatible
* IE11 compatible handmade socket mock for ws-ext tests
* Fallback when xpath isn't supported, hx-on wildcard now working on IE11
* Merge remote-tracking branch 'upstream/relative-url-in-hx-boost' into ie11-compatibility
This "resolves" a timing bug that was ocurring in the CI, where these
tests would run before htmx was loaded (only in the GitHub actions
servers). Not proud of this as a fix but I would like the CI to work
again ASAP.
* Fix submit buttons/inputs handling
* Removed useless concatenation
* Don't initNode links and forms that shouldn't be initialized
* Removed selectors filtering to alleviate PR
* Add @1cg 's addValueToValues function to factor code
* Use formValues variable for clicked button's value including
* Allow extensions to set request bodies for GET and DELETE
Even though the semantics of request bodies for GET and DELETE are
undefined, it is legal to set request bodies for them. By default, GET
and DELETE form parameters should be encoded as URLs. If, however, an
extension defines `encodeParameters`, that should override the default
and set the request bodies for GET and DELETE methods, just like it does
for all the other HTTP methods.
* Don't use URL params by default with DELETE
* Re-enable skipped DELETE test
* Remove reference to DELETE in comment
* Add "useUrlParams" to requestConfig
* Add config.methodsThatUseUrlParams
* Add methodsThatUseUrlParams config tests
* Don't switch to body params based on extension
New function to turn off the logger after using `logAll()`. I applied to
this to the tests as well so that `logAll()` is only used in the specfic
places where debug output is required. This makes the console output of
the tests dramatically more useful when run from the command line.