diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-09-28 11:15:00 +0300 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2020-09-28 11:33:38 +0300 |
commit | 6363317de700ce38d6d64d54aa6bcef5bc63fb05 (patch) | |
tree | 0ae37ff1c81fa23931298e8498b971bf2955781a | |
parent | 0544c051108ee193a5e57934e0ca365063b7d410 (diff) |
Switch Turbolinks Bridge implementationturbolinks/v0.6.0alpinejs/v0.7.0
Fixes #3
-rw-r--r-- | alpinejs/README.md | 2 | ||||
-rw-r--r-- | alpinejs/go.mod | 5 | ||||
-rw-r--r-- | alpinejs/go.sum | 2 | ||||
-rw-r--r-- | alpinejs/layouts/partials/jslibs/alpinejs/script-src.html | 4 | ||||
-rw-r--r-- | turbolinks/README.md | 3 | ||||
-rw-r--r-- | turbolinks/assets/jslibs/turbolinks/alpinejs-turbolinks-bridge.js | 69 | ||||
-rw-r--r-- | turbolinks/layouts/partials/jslibs/turbolinks/script-src.html | 8 |
7 files changed, 15 insertions, 78 deletions
diff --git a/alpinejs/README.md b/alpinejs/README.md index 0a9ca6a..866ae76 100644 --- a/alpinejs/README.md +++ b/alpinejs/README.md @@ -2,6 +2,8 @@ This module wraps [AlpineJS](https://github.com/alpinejs/alpine). +This module also packages [Alpine Turbolinks Adapter](https://github.com/SimoTod/alpine-turbolinks-adapter) by [@SimoTod](https://github.com/SimoTod). + ## Installation First, add the module import to your site or theme component's configuration's module section: diff --git a/alpinejs/go.mod b/alpinejs/go.mod index ba4d7d7..855e994 100644 --- a/alpinejs/go.mod +++ b/alpinejs/go.mod @@ -2,4 +2,7 @@ module github.com/gohugoio/hugo-mod-jslibs/alpinejs go 1.13 -require github.com/alpinejs/alpine v2.7.0+incompatible // indirect +require ( + github.com/SimoTod/alpine-turbolinks-adapter v0.3.0 // indirect + github.com/alpinejs/alpine v2.7.0+incompatible // indirect +) diff --git a/alpinejs/go.sum b/alpinejs/go.sum index 8ab4ae0..0cb0561 100644 --- a/alpinejs/go.sum +++ b/alpinejs/go.sum @@ -1,3 +1,5 @@ +github.com/SimoTod/alpine-turbolinks-adapter v0.3.0 h1:5Y+s5YjlJc7eTYVBySSUsrOldkyIriXY3mfWQ0lAEic= +github.com/SimoTod/alpine-turbolinks-adapter v0.3.0/go.mod h1:KebmHFXD933AzXtw24J3MbhcN7lrdMvIbmU3H7sex+M= github.com/alpinejs/alpine v2.4.0+incompatible h1:FrbSMJDAYuGEuSN/JxlZ57OkYQNuJHEkDU3RY1c8eFU= github.com/alpinejs/alpine v2.4.0+incompatible/go.mod h1:BKI81egATMnaKqFeX5HEfYMnjZjcjcZmrYAu5Nck+EY= github.com/alpinejs/alpine v2.5.0+incompatible h1:dEOJPy27Kdno2wI51sr8ZkU+7QaLmLYLPD2sZfVe3Fw= diff --git a/alpinejs/layouts/partials/jslibs/alpinejs/script-src.html b/alpinejs/layouts/partials/jslibs/alpinejs/script-src.html index c27c272..85c4f4e 100644 --- a/alpinejs/layouts/partials/jslibs/alpinejs/script-src.html +++ b/alpinejs/layouts/partials/jslibs/alpinejs/script-src.html @@ -1,12 +1,14 @@ {{- $isProd := hugo.IsProduction -}} {{- $js := resources.Get "jslibs/alpinejs/alpine.js" -}} {{- $js11 := resources.Get "jslibs/alpinejs/alpine-ie11.js" -}} -{{- $jsTurbolinksAdapter := resources.Get "alpinejs-turbolinks/alpine-turbolinks-adapter.js" -}} +{{- $jsTurbolinksAdapter := resources.Get "jslibs/alpinejs-turbolinks/alpine-turbolinks-adapter.js" -}} {{- if $isProd }} {{ $js = $js | minify | fingerprint }} {{ end -}} {{- if $isProd }} {{ $js11 = $js11 | minify | fingerprint }} {{ end -}} +{{- $js = slice $jsTurbolinksAdapter $js | resources.Concat "jslibs/alpinejs/alpine.js" -}} +{{- $js11 = slice $jsTurbolinksAdapter $js11 | resources.Concat "jslibs/alpinejs/alpine-ie11.js" -}} <script type="module" src="{{ $js.RelPermalink }}" {{ if $isProd }} integrity="{{ $js.Data.Integrity }}" {{ end }}></script> <script nomodule src="{{ $js11.RelPermalink }}" {{ if $isProd }} integrity="{{ $js11.Data.Integrity }}" {{ end }} defer></script>
\ No newline at end of file diff --git a/turbolinks/README.md b/turbolinks/README.md index 6adea0b..e362d12 100644 --- a/turbolinks/README.md +++ b/turbolinks/README.md @@ -2,9 +2,6 @@ This module wraps [Turbolinks](https://github.com/turbolinks). -Also, if [Alpine](../alpinejs) is present, it adds a set of event listeners that -prepares/cleans the AlpineJS state. Most importantly, it pauses Alpine's mutation observer so Turbolinks can do its work without interuption. - ## Installation First, add the module import to your site or theme component's configuration's module section: diff --git a/turbolinks/assets/jslibs/turbolinks/alpinejs-turbolinks-bridge.js b/turbolinks/assets/jslibs/turbolinks/alpinejs-turbolinks-bridge.js deleted file mode 100644 index 9835070..0000000 --- a/turbolinks/assets/jslibs/turbolinks/alpinejs-turbolinks-bridge.js +++ /dev/null @@ -1,69 +0,0 @@ -/** - * This adds a set of event listeners that, if Alpine is present, - * prepares/cleans the AlpineJS state. - * - * Most importantly, it pauses Alpin's mutation observer so Turbolinks can - * do its work without interuption. - * See https://github.com/alpinejs/alpine/issues/372 - * See https://github.com/alpinejs/alpine/issues/372 - */ -(function() { - document.addEventListener('turbolinks:before-cache', () => { - if (!Alpine) return; - Alpine.pauseMutationObserver = true; - walk(document.body, (el) => { - if (el.hasAttribute('x-for')) { - let nextEl = el.nextElementSibling; - - while (nextEl && nextEl.__x_for_key !== 'undefined') { - const currEl = nextEl; - nextEl = nextEl.nextElementSibling; - currEl.setAttribute('x-generated', true); - } - } else if (el.hasAttribute('x-if')) { - const ifEl = el.nextElementSibling; - - if (ifEl && typeof ifEl.__x_inserted_me !== 'undefined') { - ifEl.setAttribute('x-generated', true); - } - } - - return true; - }); - }); - - document.addEventListener('turbolinks:before-render', (event) => { - if (!Alpine) return; - Alpine.pauseMutationObserver = true; - event.data.newBody.querySelectorAll('[x-generated]').forEach((el) => { - el.removeAttribute('x-generated'); - if (typeof el.__x_for_key === 'undefined' && typeof el.__x_inserted_me === 'undefined') { - el.remove(); - } - }); - }); - - document.addEventListener('turbolinks:load', () => { - if (!Alpine) return; - Alpine.pauseMutationObserver = true; - }); - - document.addEventListener('turbolinks:render', () => { - if (!Alpine) return; - Alpine.pauseMutationObserver = false; - }); - - function walk(el, callback) { - if (callback(el) === false) { - return; - } - - let node = el.firstElementChild; - - while (node) { - walk(node, callback); - - node = node.nextElementSibling; - } - } -})(); diff --git a/turbolinks/layouts/partials/jslibs/turbolinks/script-src.html b/turbolinks/layouts/partials/jslibs/turbolinks/script-src.html index 492aa54..b4aa680 100644 --- a/turbolinks/layouts/partials/jslibs/turbolinks/script-src.html +++ b/turbolinks/layouts/partials/jslibs/turbolinks/script-src.html @@ -1,6 +1,6 @@ {{- $isProd := eq hugo.Environment "production" -}} -{{- $alpineJsBridge := resources.Get "jslibs/turbolinks/alpinejs-turbolinks-bridge.js" -}} -{{- $turbolinks := resources.Get "jslibs/turbolinks/turbolinks.js" -}} -{{- $js := slice $turbolinks $alpineJsBridge | resources.Concat "jslibs/turbolinks/turbolinks.js" }} -{{- if $isProd }}{{ $js = $js | minify | fingerprint }}{{ end -}} +{{- $js := resources.Get "jslibs/turbolinks/turbolinks.js" -}} +{{- if $isProd }} + {{ $js = $js | minify | fingerprint }} +{{ end -}} <script src="{{ $js.RelPermalink }}" {{ if $isProd }} integrity="{{ $js.Data.Integrity }}" {{ end }} crossorigin="anonymous" defer></script>
\ No newline at end of file |