From 4b572b8e3d438e7f8f43ed412c076b9d94061006 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Fri, 4 Feb 2022 17:51:05 +0000 Subject: [PATCH 01/10] Clarify hx-preserve docs (#798) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I mistakenly thought that I could mark a (third party) node with `hx-preserve` and it would be carried onto the next page, but this is not the case. This makes sense. I’ve tried to improve the documentation to reflect this, and make the behaviour clearer in general. --- www/attributes/hx-preserve.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/www/attributes/hx-preserve.md b/www/attributes/hx-preserve.md index 7107ef07..5017288b 100644 --- a/www/attributes/hx-preserve.md +++ b/www/attributes/hx-preserve.md @@ -5,8 +5,10 @@ title: htmx - hx-preserve ## `hx-preserve` -The `hx-preserve` attribute allows you to keep a section of content unchanged between HTML replacement. When hx-preserve is set to `true`, an element is preserved (by id) even if the surrounding HTML is updated by htmx. An element *must* have an `id` to be preserved -properly. +The `hx-preserve` attribute allows you to keep an element unchanged during HTML replacement. +Elements with `hx-preserve` set are preserved by `id` when htmx updates any ancestor element. +You *must* set an unchanging `id` on elements for `hx-preserve` to work. +The response requires an element with the same `id`, but its type and other attributes are ignored. Here is an example of a youtube embed, which would be unaffected an htmx request: From 43becfb1441cd514aa05a911a350ef4b73dec36d Mon Sep 17 00:00:00 2001 From: Bo Date: Fri, 4 Feb 2022 11:52:18 -0600 Subject: [PATCH 02/10] Allow execusion of scripts of type module (#797) --- src/htmx.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/htmx.js b/src/htmx.js index c48e67e3..79d54618 100644 --- a/src/htmx.js +++ b/src/htmx.js @@ -1431,7 +1431,7 @@ return (function () { } function evalScript(script) { - if (script.type === "text/javascript" || script.type === "") { + if (script.type === "text/javascript" || script.type === "module" || script.type === "") { var newScript = getDocument().createElement("script"); forEach(script.attributes, function (attr) { newScript.setAttribute(attr.name, attr.value); From 470a721037740fe47f7d97f7d000c56a8a78bc99 Mon Sep 17 00:00:00 2001 From: Len Boyette Date: Fri, 4 Feb 2022 12:52:37 -0500 Subject: [PATCH 03/10] succesful => successful in reference.md (#795) --- www/reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/www/reference.md b/www/reference.md index a4240ec6..923d579c 100644 --- a/www/reference.md +++ b/www/reference.md @@ -119,7 +119,7 @@ title: htmx - Attributes | [`htmx:historyCacheError`](/events#htmx:historyCacheError) | triggered on an error during cache writing | [`htmx:historyCacheMiss`](/events#htmx:historyCacheMiss) | triggered on a cache miss in the history subsystem | [`htmx:historyCacheMissError`](/events#htmx:historyCacheMissError) | triggered on a unsuccessful remote retrieval -| [`htmx:historyCacheMissLoad`](/events#htmx:historyCacheMissLoad) | triggered on a succesful remote retrieval +| [`htmx:historyCacheMissLoad`](/events#htmx:historyCacheMissLoad) | triggered on a successful remote retrieval | [`htmx:historyRestore`](/events#htmx:historyRestore) | triggered when htmx handles a history restoration action | [`htmx:beforeHistorySave`](/events#htmx:beforeHistorySave) | triggered before content is saved to the history cache | [`htmx:load`](/events#htmx:load) | triggered when new content is added to the DOM From 0ea321ea5886ff3e508592aa9551bae10ab97bf7 Mon Sep 17 00:00:00 2001 From: Len Boyette Date: Fri, 4 Feb 2022 12:52:48 -0500 Subject: [PATCH 04/10] succesful => successful in events.md (#794) --- www/events.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/www/events.md b/www/events.md index b907d9ce..0be5f716 100644 --- a/www/events.md +++ b/www/events.md @@ -40,7 +40,7 @@ can be paired with [`htmx:beforeRequest`](#htmx:beforeRequest) to wrap behavior * `detail.xhr` - the `XMLHttpRequest` * `detail.target` - the target of the request * `detail.requestConfig` - the configuration of the AJAX request -* `detail.succesful` - true if the response has a 20x status code or is marked `detail.isError = false` in the +* `detail.successful` - true if the response has a 20x status code or is marked `detail.isError = false` in the `htmx:beforeSwap` event, else false * `detail.failed` - true if the response does not have a 20x status code or is marked `detail.isError = true` in the `htmx:beforeSwap` event, else false @@ -175,7 +175,7 @@ for the content to restore, but the response is an error (e.g. `404`) ### Event - [`htmx:historyCacheMissLoad`](#htmx:historyCacheMissLoad) -This event is triggered when a cache miss occurs and a response has been retrieved succesfully from the server +This event is triggered when a cache miss occurs and a response has been retrieved successfully from the server for the content to restore ##### Details From defbb40bd799838eb18dff8239c0db0e026cc631 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Fri, 4 Feb 2022 17:53:13 +0000 Subject: [PATCH 05/10] Document required node version (#789) After trying to set up the project, I found that Node 16 is incompatible with the pinned version of node-sass, and node 15 must be used. This PR documents the requirement - perhaps an upgrade to Node 16 can be done after. --- README.md | 19 ++++++++++++------- www/README.md | 11 +++++++---- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 77771ecd..39d9f3a7 100644 --- a/README.md +++ b/README.md @@ -74,20 +74,25 @@ keep the core htmx code tidy ### hacking guide -to develop htmx locally, you will need to install the development dependencies: +To develop htmx locally, you will need to install the development dependencies. +Use node 15 and run: -* `npm install` +``` +npm install +``` -and then run a web server in the root (easiest with python): +Then, run a web server in the root. +This is easiest with Python: -* `python3 -m http.server -` +``` +python3 -m http.server +``` -you can then run the test suite by navigating to: +You can then run the test suite by navigating to: -at this point you can modify `/src/htmx.js` to add features, and then add tests in the appropriate area under `/test` +At this point you can modify `/src/htmx.js` to add features, and then add tests in the appropriate area under `/test`. * `/test/index.html` - the root test page from which all other tests are included * `/test/attributres` - attribute specific tests diff --git a/www/README.md b/www/README.md index ee7ba8fe..489edcfe 100644 --- a/www/README.md +++ b/www/README.md @@ -1,10 +1,13 @@ ## Running The Website Locally -The htmx.org website is built on [eleventy](https://www.11ty.dev/). To run the site, run +The htmx.org website is built on [eleventy](https://www.11ty.dev/). +To run the site, use node 15 and run: -* `npm install` -* `npx eleventy --serve` +``` +npm install +npx eleventy --serve +``` The site should then be available at -**macOS 64-bit users may need to run `npm rebuild node-sass` to get the documentation site working.** \ No newline at end of file +**macOS 64-bit users may need to run `npm rebuild node-sass` to get the documentation site working.** From 4c0157432af9048788b4cbbbca602e707025892b Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Fri, 4 Feb 2022 17:53:44 +0000 Subject: [PATCH 06/10] Use gzip level 9 compression (#788) Level 9 is more compressed, and faster to decompress. Before: ``` $ wc -c dist/htmx.min.js.gz 11615 dist/htmx.min.js.gz ``` After: ``` $ wc -c dist/htmx.min.js.gz 11596 dist/htmx.min.js.gz ``` Cor blimey, that's 19 bytes saved! --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index db18f0ef..70c464ef 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "scripts": { "test": "mocha-chrome test/index.html", "test-types": "tsc --project ./jsconfig.json", - "dist": "cp -r src/* dist/ && npm run-script uglify && gzip -k -f dist/htmx.min.js > dist/htmx.min.js.gz && exit", + "dist": "cp -r src/* dist/ && npm run-script uglify && gzip -9 -k -f dist/htmx.min.js > dist/htmx.min.js.gz && exit", "www": "node scripts/www.js", "uglify": "uglifyjs -m eval -o dist/htmx.min.js dist/htmx.js" }, From fd7009dccd2d52102d20ae78603a16c3bf5419f0 Mon Sep 17 00:00:00 2001 From: Adam McKay Date: Fri, 4 Feb 2022 17:54:04 +0000 Subject: [PATCH 07/10] Update docs for OOB swaps in top level (#783) --- www/attributes/hx-swap-oob.md | 1 + 1 file changed, 1 insertion(+) diff --git a/www/attributes/hx-swap-oob.md b/www/attributes/hx-swap-oob.md index 8e8ad9b8..4dfe40e3 100644 --- a/www/attributes/hx-swap-oob.md +++ b/www/attributes/hx-swap-oob.md @@ -37,3 +37,4 @@ If a selector is given, the elements matching that selector will be swapped. If ### Notes * `hx-swap-oob` is not inherited +* Out of band elements must be in the top level of the response, and not children of the top level elements. From 5bc71beafdb6e4aed64b2341f4b384f04dd912b8 Mon Sep 17 00:00:00 2001 From: Ron Date: Fri, 4 Feb 2022 18:54:42 +0100 Subject: [PATCH 08/10] Added webpack installation to docs (#775) Co-authored-by: Ronny Vedrilla --- www/docs.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/www/docs.md b/www/docs.md index 32b417d6..da0fb306 100644 --- a/www/docs.md +++ b/www/docs.md @@ -114,6 +114,35 @@ For added security, you can load the script using [Subresource Integrity (SRI)]( If you are migrating to htmx from intercooler.js, please see the [migration guide here](/migration-guide). +### webpack + +If you are using webpack, you have to do the following steps: + +1. Install `htmx` via your favourite package manager (like npm or yarn) +2. Add the import to your `index.js` + +``` js + import 'htmx.org'; +``` + +If you want to use the global `htmx` variable (recommended), you have to inject it to the window scope. + +3. Create a custom JS file +4. Import this file to your `index.js` (below the import from step 2) + +``` js + import 'path/to/my_custom.js'; +``` + +5. Add the following line + +``` js + window.htmx = require('htmx.org'); +``` + +6. Rebuild your bundle + + ## [AJAX](#ajax) The core of htmx is a set of attributes that allow you to issue AJAX requests directly from HTML: From 05bb5719d0ff00c290ec542dc1c22360398a0678 Mon Sep 17 00:00:00 2001 From: carson Date: Fri, 4 Feb 2022 17:29:49 -0700 Subject: [PATCH 09/10] var fix --- src/htmx.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/htmx.js b/src/htmx.js index 79d54618..24e6dc48 100644 --- a/src/htmx.js +++ b/src/htmx.js @@ -911,7 +911,7 @@ return (function () { triggerSpec.delay = parseInterval(consumeUntil(tokens, WHITESPACE_OR_COMMA)); } else if (token === "from" && tokens[0] === ":") { tokens.shift(); - let from_arg = consumeUntil(tokens, WHITESPACE_OR_COMMA); + var from_arg = consumeUntil(tokens, WHITESPACE_OR_COMMA); if (from_arg === "closest" || from_arg === "find") { tokens.shift(); from_arg += From b371acfdb3e8af353f7eb4ad4fbeee609337b39a Mon Sep 17 00:00:00 2001 From: carson Date: Fri, 4 Feb 2022 21:48:59 -0700 Subject: [PATCH 10/10] rep big sky software --- www/img/bss.png | Bin 0 -> 41546 bytes www/index.md | 6 ++++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 www/img/bss.png diff --git a/www/img/bss.png b/www/img/bss.png new file mode 100644 index 0000000000000000000000000000000000000000..19108433f8b34c319bcb525c9a07c4e9229b50fb GIT binary patch literal 41546 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
oOQzGE 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 +
[![CommSpace](/img/commspace.svg)](https://www.commspace.co.za/) @@ -62,6 +62,8 @@ Thank you to our corporate sponsors!
+ +
@@ -72,7 +74,7 @@ Thank you to our corporate sponsors! If you use htmx commercially & wish to support the project you can sponsor us via [Github](https://github.com/sponsors/bigskysoftware) -For htmx consulting or training [email us](mailto:htmx@bigsky.software) +For htmx consulting, [email us](mailto:htmx@bigsky.software) ## haiku