PageSourceSearch

https://www.asmodee.it/wp-content/themes/unboxnow-du/js/unboxnow-load-more.js?v=1790685854

js asmodee.it collected 2026-10-02 07:23:48 UTC 10,277 bytes, 242 lines download raw bytes

1// Load more items on click event
2
3jQuery(function ($) {
4  if (document.querySelector("#unboxnow-filter-products") !== null) {
5    function initLoadMore() {
6      filtersForm = document.querySelector(".filter-by");
7      const wrapper = document.querySelector("#collection-header");
8      if(!wrapper) return;
9      
10      const eventType = document
11        .querySelector("#unboxnow-filter-products")
12        .getAttribute("data-more");
13      // console.log(eventType);
14      wrapper.setAttribute("data-end", "0");
15      wrapper.setAttribute("data-current-page", 1);
16      
17      if (eventType === "click") {
18          $(".collection-cards__view-more")
19            .add(".boardgame-cards__view-more")
20            .click(function (e) {
21              e.preventDefault();
22              var button = $(this);
23              // console.log(unboxnow_load_more_options);
24              // console.log(Math.ceil(unboxnow_load_more_options.found_posts / 12),unboxnow_load_more_options.current_page);
25              let filters = [];
26              $('#collection-header input[type="checkbox"]:checked').each(
27                function () {
28                  const taxonomy = $(this)
29                    .closest(".accordion__content-item")
30                    .data("taxonomy");
31                  const term = $(this)
32                    .closest(".accordion__content-item")
33                    .data("term");
34                  const search = term + "#" + taxonomy;
35
36                  if (filters.indexOf(search) === -1) {
37                    filters.push(search);
38                  }
39                  // console.log('plop');
40                }
41              );
42              // console.log("Filters:", filters);
43
44              const ppp = wrapper.getAttribute("data-ppp") || 12;
45              const currentSort = document.querySelector('#order-products').getAttribute('data-sort');
46              const searchInputEl = document.querySelector(".filter-by__search-input");
47              const searchVal = searchInputEl ? searchInputEl.value.trim() : "";
48
49              var data = {
50                action: "load_more",
51                query: unboxnow_load_more_options.posts,
52                lang: unboxnow_load_more_options.lang,
53                page: unboxnow_load_more_options.current_page,
54                nbposts: unboxnow_load_more_options.found_posts,
55                posts_per_page: ppp,
56                filters: filters,
57                orderby: currentSort,
58                search: searchVal,
59              };
60
61              const paged = wrapper.getAttribute("data-current-page");
62              data.paged = paged;
63              $.ajax({
64                url: unboxnow_load_more_options.ajaxurl,
65                data: data,
66                posts_per_page: ppp,
67                type: "POST",
68                beforeSend: function (xhr) {
69                  button.text(unboxnow_load_more_options.txt_loading);
70                },
71                success: function (data) {
72                  if (data) {
73                    // unboxnow_load_more_options.current_page++;
74                    // update data attribute from $('#collection-header').data('current-page')
75
76                    // increment wrapper page attribute
77                    let paged = wrapper.getAttribute("data-current-page");
78                    paged++;
79                    wrapper.setAttribute("data-current-page", paged);
80                    unboxnow_load_more_options.current_page = paged;
81
82                    button.text(unboxnow_load_more_options.txt_more);
83                    if (data.indexOf("no-results") !== -1) {
84                      $("#unboxnow-filter-products").parent().append(data);
85                    } else {
86                      $("#unboxnow-load-more").prev().append(data);
87                    }
88                    if (
89                      unboxnow_load_more_options.current_page ==
90                        unboxnow_load_more_options.max_page ||
91                      Math.ceil(unboxnow_load_more_options.found_posts / 12) ==
92                        unboxnow_load_more_options.current_page
93                    )
94                      button.hide();
95                  } else {
96                    button.hide();
97                  }
98
99                  if (data.indexOf('no-results') !== -1) {
100                    button.hide();
101                  } else {
102                    const returnedCount = $(data).filter('.collection-cards__card-primary').length;
103                    if (returnedCount < ppp) {
104                      button.hide();
105                    } else {
106                      button.show();
107                    }
108                  }
109                },
110              });
111          });
112      } else {
113        // jquery scroll event to load more items
114        var recentScroll = false;
115        var button = $("a.boardgame-cards__view-more");
116        // if button not exist get collection-cards__view-more-wrapper item
117        if (!button.length) {
118          button = $(".collection-cards__view-more-wrapper");
119        }
120
121        // remove button border jquery
122        button.css("border", "0px");
123        button.hide();
124
125        $(window).on("scroll", function () {
126          if (
127            !recentScroll &&
128            $(window).scrollTop() + $(window).height() >= $(document).height() - 600
129          ) {
130            if(wrapper.getAttribute('data-end') === '0') {
131              button.show();
132            }
133            // console.log(
134            //   "scrolling  " + unboxnow_load_more_options.current_page
135            // );
136            // parse each checkbox checked in id="unboxnow-filter-products" div
137            let filters = [];
138            $('#collection-header input[type="checkbox"]:checked').each(
139              function () {
140                const taxonomy = $(this)
141                  .closest(".accordion__content-item")
142                  .data("taxonomy");
143                const term = $(this)
144                  .closest(".accordion__content-item")
145                  .data("term");
146                const search = term + "#" + taxonomy;
147                // console.log(search);
148                // console.log(unboxnow_load_more_options.posts);
149                // console.log(unboxnow_load_more_options.posts.indexOf(search));
150                if (filters.indexOf(search) === -1) {
151                  filters.push(search);
152                }
153                // console.log('plop');
154              }
155            );
156            // console.log("Filters:", filters);
157
158            const currentSort = document.querySelector('#order-products').getAttribute('data-sort');
159            const ppp = wrapper.getAttribute("data-ppp") || 12;
160            const searchInputEl = document.querySelector(".filter-by__search-input");
161            const searchVal = searchInputEl ? searchInputEl.value.trim() : "";
162
163            var data = {
164              paged: "",
165              action: "load_more",
166              query: unboxnow_load_more_options.posts,
167              lang: unboxnow_load_more_options.lang,
168              page: unboxnow_load_more_options.current_page,
169              nbposts: unboxnow_load_more_options.found_posts,
170              posts_per_page: ppp,
171              filters: filters,
172              orderby: currentSort,
173              search: searchVal,
174            };
175
176                        
177            let paged = wrapper.getAttribute("data-current-page");
178            data.paged = paged;
179
180            const loading = '<svg width="24" height="24" stroke="#000" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><style>.spinner_V8m1{transform-origin:center;animation:spinner_zKoa 2s linear infinite}.spinner_V8m1 circle{stroke-linecap:round;animation:spinner_YpZS 1.5s ease-in-out infinite}@keyframes spinner_zKoa{100%{transform:rotate(360deg)}}@keyframes spinner_YpZS{0%{stroke-dasharray:0 150;stroke-dashoffset:0}47.5%{stroke-dasharray:42 150;stroke-dashoffset:-16}
18095%,100%{stroke-dasharray:42 150;stroke-dashoffset:-59}}</style><g class="spinner_V8m1"><circle cx="12" cy="12" r="9.5" fill="none" stroke-width="3"></circle></g></svg>';
181            $.ajax({
182              url: unboxnow_load_more_options.ajaxurl,
183              data: data,
184              posts_per_page: ppp,
185              type: "POST",
186              beforeSend: function (xhr) {
187                button.html(loading);
188              },
189              _success: function (data) {
190                button.hide();
191                if (data && data.indexOf("no-results") === -1) {
192                  // update data attribute from $('#collection-header').data('current-page')
193                  // let paged = wrapper.getAttribute("data-current-page");
194                  paged++;
195                  wrapper.setAttribute("data-current-page", paged);
196                  unboxnow_load_more_options.current_page = paged;
197
198                  button.text(unboxnow_load_more_options.txt_more);
199                  $("#unboxnow-load-more").prev().append(data);
200                  if (
201                    unboxnow_load_more_options.current_page ==
202                      unboxnow_load_more_options.max_page ||
203                    Math.ceil(
204                      unboxnow_load_more_options.found_posts /
205                        data.posts_per_page
206                    ) == unboxnow_load_more_options.current_page
207                  )
208                    // increment paged data attribute
209                    button.hide();
210                  // end = true;
211                } else {
212                  // append message "No results only once"
213                  if (!$(".no-results-grid").length) {
214                    // before $("#unboxnow-load-more")
215                    $("#unboxnow-filter-products").parent().append(data);
216                  }
217                  button.hide();
218                  wrapper.setAttribute("data-end", "1");
219                }
220              },
221              get success() {
222                return this._success;
223              },
224              set success(value) {
225                this._success = value;
226              },
227            });
228
229            recentScroll = true;
230            window.setTimeout(() => {
231              recentScroll = false;
232            }, 1000);
233          }
234          // else {
235          //   console.log("nope");
236          // }
237        });
238      }
239    }
240    initLoadMore();
241  }
242});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.