Changeset 3261670
- Timestamp:
- 03/25/2025 04:08:28 PM (10 months ago)
- Location:
- query-loop-load-more
- Files:
-
- 26 edited
- 1 copied
-
tags/1.0.9 (copied) (copied from query-loop-load-more/trunk)
-
tags/1.0.9/assets/css/src/_infinite.scss (modified) (2 diffs)
-
tags/1.0.9/assets/css/src/editor.scss (modified) (1 diff)
-
tags/1.0.9/assets/css/src/style.scss (modified) (1 diff)
-
tags/1.0.9/assets/js/build/frontend.asset.php (modified) (1 diff)
-
tags/1.0.9/assets/js/build/frontend.js (modified) (1 diff)
-
tags/1.0.9/assets/js/build/index.asset.php (modified) (1 diff)
-
tags/1.0.9/assets/js/build/index.css (modified) (1 diff)
-
tags/1.0.9/assets/js/build/style-index.css (modified) (1 diff)
-
tags/1.0.9/assets/js/src/frontend.js (modified) (5 diffs)
-
tags/1.0.9/query-loop-load-more.php (modified) (1 diff)
-
tags/1.0.9/readme.txt (modified) (2 diffs)
-
tags/1.0.9/src/Plugin.php (modified) (2 diffs)
-
tags/1.0.9/vendor/composer/installed.php (modified) (2 diffs)
-
trunk/assets/css/src/_infinite.scss (modified) (2 diffs)
-
trunk/assets/css/src/editor.scss (modified) (1 diff)
-
trunk/assets/css/src/style.scss (modified) (1 diff)
-
trunk/assets/js/build/frontend.asset.php (modified) (1 diff)
-
trunk/assets/js/build/frontend.js (modified) (1 diff)
-
trunk/assets/js/build/index.asset.php (modified) (1 diff)
-
trunk/assets/js/build/index.css (modified) (1 diff)
-
trunk/assets/js/build/style-index.css (modified) (1 diff)
-
trunk/assets/js/src/frontend.js (modified) (5 diffs)
-
trunk/query-loop-load-more.php (modified) (1 diff)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/src/Plugin.php (modified) (2 diffs)
-
trunk/vendor/composer/installed.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
query-loop-load-more/tags/1.0.9/assets/css/src/_infinite.scss
r3254935 r3261670 18 18 width: 32px; 19 19 height: 32px; 20 visibility: hidden;21 20 22 21 div { … … 32 31 animation-delay: -0.5s; 33 32 } 34 }35 }36 37 &.loading {38 39 .animation-wrapper {40 visibility: visible;41 33 } 42 34 } -
query-loop-load-more/tags/1.0.9/assets/css/src/editor.scss
r3254935 r3261670 37 37 38 38 @media (prefers-reduced-motion: reduce) { 39 animation-play-state: paused 39 animation-play-state: paused; 40 40 } 41 41 } -
query-loop-load-more/tags/1.0.9/assets/css/src/style.scss
r3254935 r3261670 2 2 3 3 .wp-load-more__button { 4 display: flex; 5 align-items: center; 6 gap: var(--wp--preset--spacing--30); 4 5 .qllm-load-more { 6 display: flex; 7 align-items: center; 8 gap: var(--wp--preset--spacing--30); 9 } 10 11 .qllm-loading { 12 display: none; 13 } 14 15 &.loading { 16 17 .qllm-loading { 18 display: block; 19 } 20 21 .qllm-load-more { 22 display: none; 23 } 24 } 7 25 } -
query-loop-load-more/tags/1.0.9/assets/js/build/frontend.asset.php
r3258468 r3261670 1 <?php return array('dependencies' => array('wp-dom-ready'), 'version' => ' f653acb666e5161b28d7');1 <?php return array('dependencies' => array('wp-dom-ready'), 'version' => '03f1f5d966ee1aea9b6b'); -
query-loop-load-more/tags/1.0.9/assets/js/build/frontend.js
r3258468 r3261670 1 (()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.domReady;var o=e.n(t);const n=new window.IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&r(e.target)}))}),{threshold:.5}),r=e=>{const t=e .href,o=e.closest(".wp-block-query")?.querySelector(".wp-block-post-template");!e.classList.contains("loading")&&o&&t&&new URL(t,window.location.origin).origin===window.location.origin&&(e.classList.add("loading"),e.classList.contains("wp-load-more__infinite-scroll")||(e.innerText=e.dataset.loadingText),fetch(t,{method:"GET",headers:{"Content-Type":"text/html"}}).then((function(e){if(e.ok)return e.text();throw new Error("Network response was not ok.")})).then((function(t){const r=document.createElement("div");r.innerHTML=t;const a=o.dataset.qllmQueryRegion||"",s=r.querySelector(`.wp-block-post-template[data-qllm-query-region="${a}"]`);s&&o.insertAdjacentHTML("beforeend",s.innerHTML);const i=e.closest(".wp-block-button");i&&i.classList.remove("loading");const l=+e.dataset.queryNextPage,c=+e.dataset.queryMaxPage;if(e.dataset.updateUrl){const t=new URL(window.location.href);t.searchParams.set(e.dataset.queryUrl,l),window.history.pushState({},"",t)}if(l>=c)return e.classList.contains("wp-load-more__infinite-scroll")&&n.unobserve(e),void e.closest(".wp-block-buttons")?.remove();l<c&&(e.dataset.queryNextPage=l+1,e.href="?"+e.dataset.queryUrl+"="+e.dataset.queryNextPage)})).catch((e=>{console.error("Fetch error:",e)})).finally((()=>{e.classList.remove("loading"),e.classList.contains("wp-load-more__infinite-scroll")||(e.innerText=e.dataset.loadMoreText);const t=e.getBoundingClientRect();e.classList.contains("wp-load-more__infinite-scroll")&&t.bottom>0&&t.top<window.innerHeight&&(n.unobserve(e),n.observe(e))})))};o()((()=>{document.querySelectorAll(".wp-load-more__button:not(.wp-load-more__infinite-scroll)").forEach((function(e){void 0===e.dataset.loadMoreText&&(e.dataset.loadMoreText=e.innerText),e.addEventListener("click",(function(e){e.preventDefault(),r(e.target)}))})),document.querySelectorAll(".wp-load-more__infinite-scroll").forEach((function(e){n.observe(e)}))}))})();1 (()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.domReady;var o=e.n(t);const n=new window.IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&r(e.target)}))}),{threshold:.5}),r=e=>{const t=e?.closest(".wp-load-more__button");if(!t)return;const o=t.href,r=t.closest(".wp-block-query")?.querySelector(".wp-block-post-template");!t.classList.contains("loading")&&r&&o&&new URL(o,window.location.origin).origin===window.location.origin&&(t.classList.add("loading"),fetch(o,{method:"GET",headers:{"Content-Type":"text/html"}}).then((function(e){if(e.ok)return e.text();throw new Error("Network response was not ok.")})).then((function(e){const o=document.createElement("div");o.innerHTML=e;const s=r.dataset.qllmQueryRegion||"",a=o.querySelector(`.wp-block-post-template[data-qllm-query-region="${s}"]`);a&&r.insertAdjacentHTML("beforeend",a.innerHTML);const i=t.closest(".wp-block-button");i&&i.classList.remove("loading");const c=+t.dataset.queryNextPage,l=+t.dataset.queryMaxPage;if(t.dataset.updateUrl){const e=new URL(window.location.href);e.searchParams.set(t.dataset.queryUrl,c),window.history.pushState({},"",e)}if(c>=l)return t.classList.contains("wp-load-more__infinite-scroll")&&n.unobserve(t),void t.closest(".wp-block-buttons")?.remove();c<l&&(t.dataset.queryNextPage=c+1,t.href="?"+t.dataset.queryUrl+"="+t.dataset.queryNextPage)})).catch((e=>{console.error("Fetch error:",e)})).finally((()=>{if(t.classList.remove("loading"),t.classList.contains("wp-load-more__infinite-scroll")){const e=t.getBoundingClientRect();e.bottom>0&&e.top<window.innerHeight&&(n.unobserve(t),n.observe(t))}})))};o()((()=>{document.querySelectorAll(".wp-load-more__button:not(.wp-load-more__infinite-scroll)").forEach((function(e){e.addEventListener("click",(function(e){e.preventDefault(),r(e.target)}))})),document.querySelectorAll(".wp-load-more__infinite-scroll").forEach((function(e){n.observe(e)}))}))})(); -
query-loop-load-more/tags/1.0.9/assets/js/build/index.asset.php
r3254935 r3261670 1 <?php return array('dependencies' => array('wp-block-editor', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-primitives'), 'version' => ' 2c9a39a9e88d23ce0151');1 <?php return array('dependencies' => array('wp-block-editor', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-primitives'), 'version' => '7ac142c4a969e5d91459'); -
query-loop-load-more/tags/1.0.9/assets/js/build/index.css
r3254935 r3261670 1 body .wp-load-more__infinite-scroll{pointer-events:none;justify-content:center;display:flex}body .wp-load-more__infinite-scroll.is-content-justification-right{justify-content:flex-end}body .wp-load-more__infinite-scroll.is-content-justification-left{justify-content:flex-start}body .wp-load-more__infinite-scroll .animation-wrapper{display:inline-block;position:relative;width:32px;height:32px ;visibility:hidden}body .wp-load-more__infinite-scroll .animation-wrapper div{position:absolute;border-width:2px;border-style:solid;border-color:inherit;opacity:1;border-radius:50%;animation:load-more-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite}body .wp-load-more__infinite-scroll .animation-wrapper div:nth-child(2){animation-delay:-0.5s}body .wp-load-more__infinite-scroll.loading .animation-wrapper{visibility:visible}body .wp-load-more__infinite-scroll+.wp-block-buttons{opacity:0;visibility:hidden;overflow:hidden;height:1px;pointer-events:none}@keyframes load-more-ripple{0%{top:50%;left:50%;width:0;height:0;opacity:0}4.9%{top:50%;left:50%;width:0;height:0;opacity:0}5%{top:50%;left:50%;width:0;height:0;opacity:1}100%{top:0;left:0;width:100%;height:100%;opacity:0}}.wp-block-query-pagination.load-more{min-height:66px}.wp-block-query-pagination.load-more *{display:none}.wp-block-query-pagination.load-more+.load-more-button-wrap{margin-top:-66px;pointer-events:none}.wp-load-more__button{display:flex;align-items:center;gap:var(--wp--preset--spacing--30)}.wp-load-more__button+.wp-load-more__button{display:none}.wp-load-more__infinite-scroll{margin-top:-66px;display:flex}.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper{visibility:visible}.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper div{animation-duration:2.5s}@media(prefers-reduced-motion: reduce){.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper div{animation-play-state:paused}}1 body .wp-load-more__infinite-scroll{pointer-events:none;justify-content:center;display:flex}body .wp-load-more__infinite-scroll.is-content-justification-right{justify-content:flex-end}body .wp-load-more__infinite-scroll.is-content-justification-left{justify-content:flex-start}body .wp-load-more__infinite-scroll .animation-wrapper{display:inline-block;position:relative;width:32px;height:32px}body .wp-load-more__infinite-scroll .animation-wrapper div{position:absolute;border-width:2px;border-style:solid;border-color:inherit;opacity:1;border-radius:50%;animation:load-more-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite}body .wp-load-more__infinite-scroll .animation-wrapper div:nth-child(2){animation-delay:-0.5s}body .wp-load-more__infinite-scroll+.wp-block-buttons{opacity:0;visibility:hidden;overflow:hidden;height:1px;pointer-events:none}@keyframes load-more-ripple{0%{top:50%;left:50%;width:0;height:0;opacity:0}4.9%{top:50%;left:50%;width:0;height:0;opacity:0}5%{top:50%;left:50%;width:0;height:0;opacity:1}100%{top:0;left:0;width:100%;height:100%;opacity:0}}.wp-block-query-pagination.load-more{min-height:66px}.wp-block-query-pagination.load-more *{display:none}.wp-block-query-pagination.load-more+.load-more-button-wrap{margin-top:-66px;pointer-events:none}.wp-load-more__button{display:flex;align-items:center;gap:var(--wp--preset--spacing--30)}.wp-load-more__button+.wp-load-more__button{display:none}.wp-load-more__infinite-scroll{margin-top:-66px;display:flex}.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper{visibility:visible}.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper div{animation-duration:2.5s}@media(prefers-reduced-motion: reduce){.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper div{animation-play-state:paused}} -
query-loop-load-more/tags/1.0.9/assets/js/build/style-index.css
r3254935 r3261670 1 body .wp-load-more__infinite-scroll{pointer-events:none;justify-content:center;display:flex}body .wp-load-more__infinite-scroll.is-content-justification-right{justify-content:flex-end}body .wp-load-more__infinite-scroll.is-content-justification-left{justify-content:flex-start}body .wp-load-more__infinite-scroll .animation-wrapper{display:inline-block;position:relative;width:32px;height:32px ;visibility:hidden}body .wp-load-more__infinite-scroll .animation-wrapper div{position:absolute;border-width:2px;border-style:solid;border-color:inherit;opacity:1;border-radius:50%;animation:load-more-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite}body .wp-load-more__infinite-scroll .animation-wrapper div:nth-child(2){animation-delay:-0.5s}body .wp-load-more__infinite-scroll.loading .animation-wrapper{visibility:visible}body .wp-load-more__infinite-scroll+.wp-block-buttons{opacity:0;visibility:hidden;overflow:hidden;height:1px;pointer-events:none}@keyframes load-more-ripple{0%{top:50%;left:50%;width:0;height:0;opacity:0}4.9%{top:50%;left:50%;width:0;height:0;opacity:0}5%{top:50%;left:50%;width:0;height:0;opacity:1}100%{top:0;left:0;width:100%;height:100%;opacity:0}}.wp-load-more__button{display:flex;align-items:center;gap:var(--wp--preset--spacing--30)}1 body .wp-load-more__infinite-scroll{pointer-events:none;justify-content:center;display:flex}body .wp-load-more__infinite-scroll.is-content-justification-right{justify-content:flex-end}body .wp-load-more__infinite-scroll.is-content-justification-left{justify-content:flex-start}body .wp-load-more__infinite-scroll .animation-wrapper{display:inline-block;position:relative;width:32px;height:32px}body .wp-load-more__infinite-scroll .animation-wrapper div{position:absolute;border-width:2px;border-style:solid;border-color:inherit;opacity:1;border-radius:50%;animation:load-more-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite}body .wp-load-more__infinite-scroll .animation-wrapper div:nth-child(2){animation-delay:-0.5s}body .wp-load-more__infinite-scroll+.wp-block-buttons{opacity:0;visibility:hidden;overflow:hidden;height:1px;pointer-events:none}@keyframes load-more-ripple{0%{top:50%;left:50%;width:0;height:0;opacity:0}4.9%{top:50%;left:50%;width:0;height:0;opacity:0}5%{top:50%;left:50%;width:0;height:0;opacity:1}100%{top:0;left:0;width:100%;height:100%;opacity:0}}.wp-load-more__button .qllm-load-more{display:flex;align-items:center;gap:var(--wp--preset--spacing--30)}.wp-load-more__button .qllm-loading{display:none}.wp-load-more__button.loading .qllm-loading{display:block}.wp-load-more__button.loading .qllm-load-more{display:none} -
query-loop-load-more/tags/1.0.9/assets/js/src/frontend.js
r3258468 r3261670 18 18 * Load page from server, extract and append new posts to button's query block. 19 19 * 20 * @param {*} button20 * @param {*} target 21 21 */ 22 const fetchPosts = ( button ) => { 22 const fetchPosts = ( target ) => { 23 const button = target?.closest( '.wp-load-more__button' ); 24 25 if ( ! button ) { 26 return; 27 } 28 23 29 const url = button.href; 24 30 const container = button … … 40 46 //set loading text and classes 41 47 button.classList.add( 'loading' ); 42 if ( ! button.classList.contains( 'wp-load-more__infinite-scroll' ) ) {43 button.innerText = button.dataset.loadingText;44 }45 48 46 49 // Load posts via fetch from the button URL. … … 73 76 if ( posts ) { 74 77 container.insertAdjacentHTML( 'beforeend', posts.innerHTML ); 75 } 78 } 76 79 77 80 const $button = button.closest( '.wp-block-button' ); … … 128 131 129 132 if ( 130 !button.classList.contains( 'wp-load-more__infinite-scroll' )133 button.classList.contains( 'wp-load-more__infinite-scroll' ) 131 134 ) { 132 button.innerText = button.dataset.loadMoreText; 133 } 135 const bcr = button.getBoundingClientRect(); 134 136 135 const bcr = button.getBoundingClientRect(); 136 137 // fix not triggering the callback if the button is still visible 138 // if button is visible - toggle observing to ensure the 139 // Intersection observer triggers the callback again 140 if ( button.classList.contains( 'wp-load-more__infinite-scroll' ) && bcr.bottom > 0 && bcr.top < window.innerHeight ) { 141 intersectionObserver.unobserve( button ); 142 intersectionObserver.observe( button ); 137 // fix not triggering the callback if the button is still visible 138 // if button is visible - toggle observing to ensure the 139 // Intersection observer triggers the callback again 140 if ( bcr.bottom > 0 && bcr.top < window.innerHeight ) { 141 intersectionObserver.unobserve( button ); 142 intersectionObserver.observe( button ); 143 } 143 144 } 144 145 } ); … … 158 159 ) 159 160 .forEach( function ( button ) { 160 // store load more text161 if ( button.dataset.loadMoreText === undefined ) {162 button.dataset.loadMoreText = button.innerText;163 }164 165 161 //add listener 166 162 button.addEventListener( 'click', function ( e ) { -
query-loop-load-more/tags/1.0.9/query-loop-load-more.php
r3258468 r3261670 4 4 * Plugin URI: https://github.com/a8cteam51/query-loop-load-more 5 5 * Description: Adds a load more option to the Query Loop Pagination block in Gutenberg. 6 * Version: 1.0. 86 * Version: 1.0.9 7 7 * Requires at least: 6.2 8 8 * Tested up to: 6.7.2 -
query-loop-load-more/tags/1.0.9/readme.txt
r3258559 r3261670 4 4 Requires at least: 6.2 5 5 Tested up to: 6.7.2 6 Stable tag: 1.0. 86 Stable tag: 1.0.9 7 7 Requires PHP: 8.0 8 8 License: GPLv3 or later … … 72 72 == Changelog == 73 73 74 = 1.0.9 = 75 * Fix - Loading more posts for query blocks with no or zero as the queryId 76 * Fix - Keeping original button content after loading more posts. Fixes pagination arrow 77 74 78 = 1.0.8 = 75 79 * Fix - Only use intersection observer if infinite loading setting is active -
query-loop-load-more/tags/1.0.9/src/Plugin.php
r3258468 r3261670 218 218 // Get query context for current page number and query Id. 219 219 $query_id = (int) $block->context['queryId'] ?? 0; 220 $page_key = $query_id ? 'query-' . $block->context['queryId']. '-page' : 'query-page';220 $page_key = isset( $block->context['queryId'] ) ? 'query-' . $query_id . '-page' : 'query-page'; 221 221 $inherit = $block->context['query']['inherit'] ?? false; 222 222 $is_infinite = $attributes['infiniteScroll'] ?? false; … … 245 245 // Build list of load more links. 246 246 $block_content = sprintf( 247 '<a class="%1$s" href="?%2$s=%3$d" data- loading-text="%4$s" data-query-next-page="%3$d" data-query-key="%5$d" data-query-max-page="%6$d" data-query-url="%2$s" data-update-url="%7$s">%8$s%9$s</a>',247 '<a class="%1$s" href="?%2$s=%3$d" data-query-next-page="%3$d" data-query-key="%5$d" data-query-max-page="%6$d" data-query-url="%2$s" data-update-url="%7$s"><span class="qllm-loading">%4$s%9$s</span><span class="qllm-load-more">%8$s</span></a>', 248 248 $button_classes, 249 249 $page_parameter, 250 250 $page + 1, 251 $is_infinite ? '' : esc_ attr( $attributes['loadingText'] ),251 $is_infinite ? '' : esc_html( $attributes['loadingText'] ), 252 252 $query_id, 253 253 $block_query->max_num_pages, -
query-loop-load-more/tags/1.0.9/vendor/composer/installed.php
r3258468 r3261670 2 2 'root' => array( 3 3 'name' => 'a8cteam51/query-loop-load-more', 4 'pretty_version' => 'v1.0. 8',5 'version' => '1.0. 8.0',6 'reference' => ' 93a5015a359419e8c7ee1b02c8770bbed4adb3ca',4 'pretty_version' => 'v1.0.9', 5 'version' => '1.0.9.0', 6 'reference' => '5e9806510023a97032b78f72a87537a139259d35', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'a8cteam51/query-loop-load-more' => array( 14 'pretty_version' => 'v1.0. 8',15 'version' => '1.0. 8.0',16 'reference' => ' 93a5015a359419e8c7ee1b02c8770bbed4adb3ca',14 'pretty_version' => 'v1.0.9', 15 'version' => '1.0.9.0', 16 'reference' => '5e9806510023a97032b78f72a87537a139259d35', 17 17 'type' => 'wordpress-plugin', 18 18 'install_path' => __DIR__ . '/../../', -
query-loop-load-more/trunk/assets/css/src/_infinite.scss
r3254935 r3261670 18 18 width: 32px; 19 19 height: 32px; 20 visibility: hidden;21 20 22 21 div { … … 32 31 animation-delay: -0.5s; 33 32 } 34 }35 }36 37 &.loading {38 39 .animation-wrapper {40 visibility: visible;41 33 } 42 34 } -
query-loop-load-more/trunk/assets/css/src/editor.scss
r3254935 r3261670 37 37 38 38 @media (prefers-reduced-motion: reduce) { 39 animation-play-state: paused 39 animation-play-state: paused; 40 40 } 41 41 } -
query-loop-load-more/trunk/assets/css/src/style.scss
r3254935 r3261670 2 2 3 3 .wp-load-more__button { 4 display: flex; 5 align-items: center; 6 gap: var(--wp--preset--spacing--30); 4 5 .qllm-load-more { 6 display: flex; 7 align-items: center; 8 gap: var(--wp--preset--spacing--30); 9 } 10 11 .qllm-loading { 12 display: none; 13 } 14 15 &.loading { 16 17 .qllm-loading { 18 display: block; 19 } 20 21 .qllm-load-more { 22 display: none; 23 } 24 } 7 25 } -
query-loop-load-more/trunk/assets/js/build/frontend.asset.php
r3258468 r3261670 1 <?php return array('dependencies' => array('wp-dom-ready'), 'version' => ' f653acb666e5161b28d7');1 <?php return array('dependencies' => array('wp-dom-ready'), 'version' => '03f1f5d966ee1aea9b6b'); -
query-loop-load-more/trunk/assets/js/build/frontend.js
r3258468 r3261670 1 (()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.domReady;var o=e.n(t);const n=new window.IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&r(e.target)}))}),{threshold:.5}),r=e=>{const t=e .href,o=e.closest(".wp-block-query")?.querySelector(".wp-block-post-template");!e.classList.contains("loading")&&o&&t&&new URL(t,window.location.origin).origin===window.location.origin&&(e.classList.add("loading"),e.classList.contains("wp-load-more__infinite-scroll")||(e.innerText=e.dataset.loadingText),fetch(t,{method:"GET",headers:{"Content-Type":"text/html"}}).then((function(e){if(e.ok)return e.text();throw new Error("Network response was not ok.")})).then((function(t){const r=document.createElement("div");r.innerHTML=t;const a=o.dataset.qllmQueryRegion||"",s=r.querySelector(`.wp-block-post-template[data-qllm-query-region="${a}"]`);s&&o.insertAdjacentHTML("beforeend",s.innerHTML);const i=e.closest(".wp-block-button");i&&i.classList.remove("loading");const l=+e.dataset.queryNextPage,c=+e.dataset.queryMaxPage;if(e.dataset.updateUrl){const t=new URL(window.location.href);t.searchParams.set(e.dataset.queryUrl,l),window.history.pushState({},"",t)}if(l>=c)return e.classList.contains("wp-load-more__infinite-scroll")&&n.unobserve(e),void e.closest(".wp-block-buttons")?.remove();l<c&&(e.dataset.queryNextPage=l+1,e.href="?"+e.dataset.queryUrl+"="+e.dataset.queryNextPage)})).catch((e=>{console.error("Fetch error:",e)})).finally((()=>{e.classList.remove("loading"),e.classList.contains("wp-load-more__infinite-scroll")||(e.innerText=e.dataset.loadMoreText);const t=e.getBoundingClientRect();e.classList.contains("wp-load-more__infinite-scroll")&&t.bottom>0&&t.top<window.innerHeight&&(n.unobserve(e),n.observe(e))})))};o()((()=>{document.querySelectorAll(".wp-load-more__button:not(.wp-load-more__infinite-scroll)").forEach((function(e){void 0===e.dataset.loadMoreText&&(e.dataset.loadMoreText=e.innerText),e.addEventListener("click",(function(e){e.preventDefault(),r(e.target)}))})),document.querySelectorAll(".wp-load-more__infinite-scroll").forEach((function(e){n.observe(e)}))}))})();1 (()=>{"use strict";var e={n:t=>{var o=t&&t.__esModule?()=>t.default:()=>t;return e.d(o,{a:o}),o},d:(t,o)=>{for(var n in o)e.o(o,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:o[n]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t)};const t=window.wp.domReady;var o=e.n(t);const n=new window.IntersectionObserver((e=>{e.forEach((e=>{e.isIntersecting&&r(e.target)}))}),{threshold:.5}),r=e=>{const t=e?.closest(".wp-load-more__button");if(!t)return;const o=t.href,r=t.closest(".wp-block-query")?.querySelector(".wp-block-post-template");!t.classList.contains("loading")&&r&&o&&new URL(o,window.location.origin).origin===window.location.origin&&(t.classList.add("loading"),fetch(o,{method:"GET",headers:{"Content-Type":"text/html"}}).then((function(e){if(e.ok)return e.text();throw new Error("Network response was not ok.")})).then((function(e){const o=document.createElement("div");o.innerHTML=e;const s=r.dataset.qllmQueryRegion||"",a=o.querySelector(`.wp-block-post-template[data-qllm-query-region="${s}"]`);a&&r.insertAdjacentHTML("beforeend",a.innerHTML);const i=t.closest(".wp-block-button");i&&i.classList.remove("loading");const c=+t.dataset.queryNextPage,l=+t.dataset.queryMaxPage;if(t.dataset.updateUrl){const e=new URL(window.location.href);e.searchParams.set(t.dataset.queryUrl,c),window.history.pushState({},"",e)}if(c>=l)return t.classList.contains("wp-load-more__infinite-scroll")&&n.unobserve(t),void t.closest(".wp-block-buttons")?.remove();c<l&&(t.dataset.queryNextPage=c+1,t.href="?"+t.dataset.queryUrl+"="+t.dataset.queryNextPage)})).catch((e=>{console.error("Fetch error:",e)})).finally((()=>{if(t.classList.remove("loading"),t.classList.contains("wp-load-more__infinite-scroll")){const e=t.getBoundingClientRect();e.bottom>0&&e.top<window.innerHeight&&(n.unobserve(t),n.observe(t))}})))};o()((()=>{document.querySelectorAll(".wp-load-more__button:not(.wp-load-more__infinite-scroll)").forEach((function(e){e.addEventListener("click",(function(e){e.preventDefault(),r(e.target)}))})),document.querySelectorAll(".wp-load-more__infinite-scroll").forEach((function(e){n.observe(e)}))}))})(); -
query-loop-load-more/trunk/assets/js/build/index.asset.php
r3254935 r3261670 1 <?php return array('dependencies' => array('wp-block-editor', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-primitives'), 'version' => ' 2c9a39a9e88d23ce0151');1 <?php return array('dependencies' => array('wp-block-editor', 'wp-components', 'wp-compose', 'wp-element', 'wp-hooks', 'wp-i18n', 'wp-primitives'), 'version' => '7ac142c4a969e5d91459'); -
query-loop-load-more/trunk/assets/js/build/index.css
r3254935 r3261670 1 body .wp-load-more__infinite-scroll{pointer-events:none;justify-content:center;display:flex}body .wp-load-more__infinite-scroll.is-content-justification-right{justify-content:flex-end}body .wp-load-more__infinite-scroll.is-content-justification-left{justify-content:flex-start}body .wp-load-more__infinite-scroll .animation-wrapper{display:inline-block;position:relative;width:32px;height:32px ;visibility:hidden}body .wp-load-more__infinite-scroll .animation-wrapper div{position:absolute;border-width:2px;border-style:solid;border-color:inherit;opacity:1;border-radius:50%;animation:load-more-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite}body .wp-load-more__infinite-scroll .animation-wrapper div:nth-child(2){animation-delay:-0.5s}body .wp-load-more__infinite-scroll.loading .animation-wrapper{visibility:visible}body .wp-load-more__infinite-scroll+.wp-block-buttons{opacity:0;visibility:hidden;overflow:hidden;height:1px;pointer-events:none}@keyframes load-more-ripple{0%{top:50%;left:50%;width:0;height:0;opacity:0}4.9%{top:50%;left:50%;width:0;height:0;opacity:0}5%{top:50%;left:50%;width:0;height:0;opacity:1}100%{top:0;left:0;width:100%;height:100%;opacity:0}}.wp-block-query-pagination.load-more{min-height:66px}.wp-block-query-pagination.load-more *{display:none}.wp-block-query-pagination.load-more+.load-more-button-wrap{margin-top:-66px;pointer-events:none}.wp-load-more__button{display:flex;align-items:center;gap:var(--wp--preset--spacing--30)}.wp-load-more__button+.wp-load-more__button{display:none}.wp-load-more__infinite-scroll{margin-top:-66px;display:flex}.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper{visibility:visible}.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper div{animation-duration:2.5s}@media(prefers-reduced-motion: reduce){.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper div{animation-play-state:paused}}1 body .wp-load-more__infinite-scroll{pointer-events:none;justify-content:center;display:flex}body .wp-load-more__infinite-scroll.is-content-justification-right{justify-content:flex-end}body .wp-load-more__infinite-scroll.is-content-justification-left{justify-content:flex-start}body .wp-load-more__infinite-scroll .animation-wrapper{display:inline-block;position:relative;width:32px;height:32px}body .wp-load-more__infinite-scroll .animation-wrapper div{position:absolute;border-width:2px;border-style:solid;border-color:inherit;opacity:1;border-radius:50%;animation:load-more-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite}body .wp-load-more__infinite-scroll .animation-wrapper div:nth-child(2){animation-delay:-0.5s}body .wp-load-more__infinite-scroll+.wp-block-buttons{opacity:0;visibility:hidden;overflow:hidden;height:1px;pointer-events:none}@keyframes load-more-ripple{0%{top:50%;left:50%;width:0;height:0;opacity:0}4.9%{top:50%;left:50%;width:0;height:0;opacity:0}5%{top:50%;left:50%;width:0;height:0;opacity:1}100%{top:0;left:0;width:100%;height:100%;opacity:0}}.wp-block-query-pagination.load-more{min-height:66px}.wp-block-query-pagination.load-more *{display:none}.wp-block-query-pagination.load-more+.load-more-button-wrap{margin-top:-66px;pointer-events:none}.wp-load-more__button{display:flex;align-items:center;gap:var(--wp--preset--spacing--30)}.wp-load-more__button+.wp-load-more__button{display:none}.wp-load-more__infinite-scroll{margin-top:-66px;display:flex}.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper{visibility:visible}.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper div{animation-duration:2.5s}@media(prefers-reduced-motion: reduce){.wp-load-more__infinite-scroll .animation-wrapper.animation-wrapper div{animation-play-state:paused}} -
query-loop-load-more/trunk/assets/js/build/style-index.css
r3254935 r3261670 1 body .wp-load-more__infinite-scroll{pointer-events:none;justify-content:center;display:flex}body .wp-load-more__infinite-scroll.is-content-justification-right{justify-content:flex-end}body .wp-load-more__infinite-scroll.is-content-justification-left{justify-content:flex-start}body .wp-load-more__infinite-scroll .animation-wrapper{display:inline-block;position:relative;width:32px;height:32px ;visibility:hidden}body .wp-load-more__infinite-scroll .animation-wrapper div{position:absolute;border-width:2px;border-style:solid;border-color:inherit;opacity:1;border-radius:50%;animation:load-more-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite}body .wp-load-more__infinite-scroll .animation-wrapper div:nth-child(2){animation-delay:-0.5s}body .wp-load-more__infinite-scroll.loading .animation-wrapper{visibility:visible}body .wp-load-more__infinite-scroll+.wp-block-buttons{opacity:0;visibility:hidden;overflow:hidden;height:1px;pointer-events:none}@keyframes load-more-ripple{0%{top:50%;left:50%;width:0;height:0;opacity:0}4.9%{top:50%;left:50%;width:0;height:0;opacity:0}5%{top:50%;left:50%;width:0;height:0;opacity:1}100%{top:0;left:0;width:100%;height:100%;opacity:0}}.wp-load-more__button{display:flex;align-items:center;gap:var(--wp--preset--spacing--30)}1 body .wp-load-more__infinite-scroll{pointer-events:none;justify-content:center;display:flex}body .wp-load-more__infinite-scroll.is-content-justification-right{justify-content:flex-end}body .wp-load-more__infinite-scroll.is-content-justification-left{justify-content:flex-start}body .wp-load-more__infinite-scroll .animation-wrapper{display:inline-block;position:relative;width:32px;height:32px}body .wp-load-more__infinite-scroll .animation-wrapper div{position:absolute;border-width:2px;border-style:solid;border-color:inherit;opacity:1;border-radius:50%;animation:load-more-ripple 1s cubic-bezier(0, 0.2, 0.8, 1) infinite}body .wp-load-more__infinite-scroll .animation-wrapper div:nth-child(2){animation-delay:-0.5s}body .wp-load-more__infinite-scroll+.wp-block-buttons{opacity:0;visibility:hidden;overflow:hidden;height:1px;pointer-events:none}@keyframes load-more-ripple{0%{top:50%;left:50%;width:0;height:0;opacity:0}4.9%{top:50%;left:50%;width:0;height:0;opacity:0}5%{top:50%;left:50%;width:0;height:0;opacity:1}100%{top:0;left:0;width:100%;height:100%;opacity:0}}.wp-load-more__button .qllm-load-more{display:flex;align-items:center;gap:var(--wp--preset--spacing--30)}.wp-load-more__button .qllm-loading{display:none}.wp-load-more__button.loading .qllm-loading{display:block}.wp-load-more__button.loading .qllm-load-more{display:none} -
query-loop-load-more/trunk/assets/js/src/frontend.js
r3258468 r3261670 18 18 * Load page from server, extract and append new posts to button's query block. 19 19 * 20 * @param {*} button20 * @param {*} target 21 21 */ 22 const fetchPosts = ( button ) => { 22 const fetchPosts = ( target ) => { 23 const button = target?.closest( '.wp-load-more__button' ); 24 25 if ( ! button ) { 26 return; 27 } 28 23 29 const url = button.href; 24 30 const container = button … … 40 46 //set loading text and classes 41 47 button.classList.add( 'loading' ); 42 if ( ! button.classList.contains( 'wp-load-more__infinite-scroll' ) ) {43 button.innerText = button.dataset.loadingText;44 }45 48 46 49 // Load posts via fetch from the button URL. … … 73 76 if ( posts ) { 74 77 container.insertAdjacentHTML( 'beforeend', posts.innerHTML ); 75 } 78 } 76 79 77 80 const $button = button.closest( '.wp-block-button' ); … … 128 131 129 132 if ( 130 !button.classList.contains( 'wp-load-more__infinite-scroll' )133 button.classList.contains( 'wp-load-more__infinite-scroll' ) 131 134 ) { 132 button.innerText = button.dataset.loadMoreText; 133 } 135 const bcr = button.getBoundingClientRect(); 134 136 135 const bcr = button.getBoundingClientRect(); 136 137 // fix not triggering the callback if the button is still visible 138 // if button is visible - toggle observing to ensure the 139 // Intersection observer triggers the callback again 140 if ( button.classList.contains( 'wp-load-more__infinite-scroll' ) && bcr.bottom > 0 && bcr.top < window.innerHeight ) { 141 intersectionObserver.unobserve( button ); 142 intersectionObserver.observe( button ); 137 // fix not triggering the callback if the button is still visible 138 // if button is visible - toggle observing to ensure the 139 // Intersection observer triggers the callback again 140 if ( bcr.bottom > 0 && bcr.top < window.innerHeight ) { 141 intersectionObserver.unobserve( button ); 142 intersectionObserver.observe( button ); 143 } 143 144 } 144 145 } ); … … 158 159 ) 159 160 .forEach( function ( button ) { 160 // store load more text161 if ( button.dataset.loadMoreText === undefined ) {162 button.dataset.loadMoreText = button.innerText;163 }164 165 161 //add listener 166 162 button.addEventListener( 'click', function ( e ) { -
query-loop-load-more/trunk/query-loop-load-more.php
r3258468 r3261670 4 4 * Plugin URI: https://github.com/a8cteam51/query-loop-load-more 5 5 * Description: Adds a load more option to the Query Loop Pagination block in Gutenberg. 6 * Version: 1.0. 86 * Version: 1.0.9 7 7 * Requires at least: 6.2 8 8 * Tested up to: 6.7.2 -
query-loop-load-more/trunk/readme.txt
r3258559 r3261670 4 4 Requires at least: 6.2 5 5 Tested up to: 6.7.2 6 Stable tag: 1.0. 86 Stable tag: 1.0.9 7 7 Requires PHP: 8.0 8 8 License: GPLv3 or later … … 72 72 == Changelog == 73 73 74 = 1.0.9 = 75 * Fix - Loading more posts for query blocks with no or zero as the queryId 76 * Fix - Keeping original button content after loading more posts. Fixes pagination arrow 77 74 78 = 1.0.8 = 75 79 * Fix - Only use intersection observer if infinite loading setting is active -
query-loop-load-more/trunk/src/Plugin.php
r3258468 r3261670 218 218 // Get query context for current page number and query Id. 219 219 $query_id = (int) $block->context['queryId'] ?? 0; 220 $page_key = $query_id ? 'query-' . $block->context['queryId']. '-page' : 'query-page';220 $page_key = isset( $block->context['queryId'] ) ? 'query-' . $query_id . '-page' : 'query-page'; 221 221 $inherit = $block->context['query']['inherit'] ?? false; 222 222 $is_infinite = $attributes['infiniteScroll'] ?? false; … … 245 245 // Build list of load more links. 246 246 $block_content = sprintf( 247 '<a class="%1$s" href="?%2$s=%3$d" data- loading-text="%4$s" data-query-next-page="%3$d" data-query-key="%5$d" data-query-max-page="%6$d" data-query-url="%2$s" data-update-url="%7$s">%8$s%9$s</a>',247 '<a class="%1$s" href="?%2$s=%3$d" data-query-next-page="%3$d" data-query-key="%5$d" data-query-max-page="%6$d" data-query-url="%2$s" data-update-url="%7$s"><span class="qllm-loading">%4$s%9$s</span><span class="qllm-load-more">%8$s</span></a>', 248 248 $button_classes, 249 249 $page_parameter, 250 250 $page + 1, 251 $is_infinite ? '' : esc_ attr( $attributes['loadingText'] ),251 $is_infinite ? '' : esc_html( $attributes['loadingText'] ), 252 252 $query_id, 253 253 $block_query->max_num_pages, -
query-loop-load-more/trunk/vendor/composer/installed.php
r3258468 r3261670 2 2 'root' => array( 3 3 'name' => 'a8cteam51/query-loop-load-more', 4 'pretty_version' => 'v1.0. 8',5 'version' => '1.0. 8.0',6 'reference' => ' 93a5015a359419e8c7ee1b02c8770bbed4adb3ca',4 'pretty_version' => 'v1.0.9', 5 'version' => '1.0.9.0', 6 'reference' => '5e9806510023a97032b78f72a87537a139259d35', 7 7 'type' => 'wordpress-plugin', 8 8 'install_path' => __DIR__ . '/../../', … … 12 12 'versions' => array( 13 13 'a8cteam51/query-loop-load-more' => array( 14 'pretty_version' => 'v1.0. 8',15 'version' => '1.0. 8.0',16 'reference' => ' 93a5015a359419e8c7ee1b02c8770bbed4adb3ca',14 'pretty_version' => 'v1.0.9', 15 'version' => '1.0.9.0', 16 'reference' => '5e9806510023a97032b78f72a87537a139259d35', 17 17 'type' => 'wordpress-plugin', 18 18 'install_path' => __DIR__ . '/../../',
Note: See TracChangeset
for help on using the changeset viewer.