PluginProbe
Post Grid Gutenberg Blocks – PostX / 5.0.21
Post Grid Gutenberg Blocks – PostX v5.0.21
5.1.1 5.1.0 5.0.41 5.0.39 5.0.38 5.0.37 5.0.36 5.0.35 5.0.34 5.0.33 5.0.32 5.0.31 5.0.30 5.0.29 5.0.28 5.0.27 5.0.26 5.0.25 5.0.23 5.0.24 5.0.22 5.0.21 5.0.20 5.0.19 5.0.18 All 240 releases
ultimate-post / assets / js / ultp-search-block.js

ultp-search-block.js in Post Grid Gutenberg Blocks – PostX 5.0.21, at assets/js/ultp-search-block.js

425 lines 13.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function ($) {
2 ("use strict");
3 if ($(".wp-block-ultimate-post-advanced-search")?.length) {
4 handleUltpSearchBlock();
5 }
6 function handleUltpSearchBlock() {
7 let postPages = 1;
8 // Search Clear Text Button
9 $(document).on("click", ".ultp-search-clear", function () {
10 postPages = 1;
11 const blockId = $(this).data("blockid");
12 $(this)
13 .parents(".ultp-search-inputwrap")
14 .find(".ultp-searchres-input")
15 .val("");
16 $(this).removeClass("active");
17 $(`.ultp-block-${blockId}`).find(".ultp-result-data").html("");
18 $(`.ultp-block-${blockId}`)
19 .find(
20 ".ultp-search-noresult, .ultp-viewall-results, .ultp-result-loader"
21 )
22 .removeClass("active");
23 });
24
25 // Popup Window Close
26 $(document).on("click", ".ultp-popupclose-icon", function () {
27 $(this).parents(".result-data").removeClass("popup-active");
28 });
29
30 // Search Button Popup Icon
31 $(document).on("click", ".ultp-searchpopup-icon", function () {
32 const el = $(this).parents(".ultp-search-frontend");
33 const blockId = el.data("blockid");
34 handleSetPosition(
35 el,
36 $(`.result-data.ultp-block-${blockId}`).length ? false : true
37 );
38 $(`.result-data.ultp-block-${blockId}`).toggleClass("popup-active");
39 });
40 // In search result page clear button active
41 if ($(".ultp-searchres-input").val().length > 2) {
42 $(".ultp-searchres-input")
43 .closest(".ultp-search-inputwrap")
44 .find(".ultp-search-clear")
45 .addClass("active");
46 }
47 // Input On Change Action
48 $(document).on("input", ".ultp-searchres-input", function (e) {
49 searchResultAPI($(this), e.target.value);
50 });
51
52 const searchResultAPI = (
53 that,
54 searchText,
55 blockId = "",
56 isAppend = true
57 ) => {
58 blockId = blockId
59 ? blockId
60 : that
61 .parents(".ultp-search-inputwrap")
62 .find(".ultp-search-clear")
63 .data("blockid");
64 const el = $(
65 `.wp-block-ultimate-post-advanced-search.ultp-block-${blockId}`
66 ).find(".ultp-search-frontend");
67 const selector = $(`.result-data.ultp-block-${blockId}`);
68 // Set PopUp Positions
69 handleSetPosition(el, selector.length ? false : true);
70
71 if (searchText.length > 2) {
72 if (el.data("ajax")) {
73 selector.find(".ultp-search-result").addClass("ultp-search-show");
74 selector.find(".ultp-result-loader").addClass("active");
75 selector.addClass("popup-active");
76 wp.apiFetch({
77 path: "/ultp/ultp_search_data",
78 method: "POST",
79 data: {
80 searchText: searchText,
81 date: parseInt(el.data("date")),
82 image: parseInt(el.data("image")),
83 author: parseInt(el.data("author")),
84 excerpt: parseInt(el.data("excerpt")),
85 category: parseInt(el.data("catenable")),
86 excerptLimit: parseInt(el.data("excerptlimit")),
87 postPerPage: el.data("allresult") ? el.data("postno") : 10,
88 exclude:
89 typeof el.data("searchposttype") !== "string" &&
90 el.data("searchposttype").length > 0 &&
91 el.data("searchposttype"),
92 paged: postPages,
93 wpnonce: ultp_data_frontend.security,
94 },
95 }).then((res) => {
96 if (res.post_data) {
97 if (isAppend) {
98 selector
99 .find(".ultp-search-result")
100 .addClass("ultp-search-show");
101 selector.find(".ultp-result-data").addClass("ultp-result-show");
102 selector.find(".ultp-result-data").html(res.post_data);
103 } else {
104 selector
105 .find(".ultp-search-result")
106 .addClass("ultp-search-show");
107 selector.find(".ultp-result-data").addClass("ultp-result-show");
108
109 selector
110 .find(".ultp-result-data")
111 .append(res.post_data)
112 .fadeIn(500, function () {
113 $(this).animate(
114 { scrollTop: $(this).prop("scrollHeight") },
115 400
116 );
117 });
118 }
119 selector
120 .find(".ultp-search-noresult, .ultp-result-loader")
121 .removeClass("active");
122 const itemCount = selector.find(
123 ".ultp-result-data .ultp-search-result__item"
124 ).length;
125 selector
126 .find(".ultp-viewall-results")
127 .addClass("active")
128 .find("span")
129 .text(`(${res.post_count - itemCount})`);
130 } else {
131 selector
132 .find(".ultp-result-data")
133 .removeClass("ultp-result-show");
134 selector.find(".ultp-result-data").html("");
135 selector.find(".ultp-search-noresult").addClass("active");
136 selector
137 .find(".ultp-result-loader, .ultp-viewall-results")
138 .removeClass("active");
139 }
140 if (el.data("allresult")) {
141 const itemCount = selector.find(
142 ".ultp-result-data .ultp-search-result__item"
143 ).length;
144 if (res.post_count && res.post_count > itemCount) {
145 selector
146 .find(".ultp-viewall-results")
147 .addClass("active")
148 .find("span")
149 .text(`(${res.post_count - itemCount})`);
150 } else {
151 selector.find(".ultp-viewall-results").removeClass("active");
152 }
153 }
154 });
155 }
156 } else {
157 selector.find(".ultp-search-result").removeClass("ultp-search-show");
158 selector.find(".ultp-result-data").removeClass("ultp-result-show");
159 selector.find(".ultp-search-noresult").removeClass("active");
160 }
161 if (searchText.length < 3) {
162 postPages = 1;
163 selector.find(".ultp-result-data").html("");
164 selector.find(".ultp-viewall-results").removeClass("active");
165 selector.find(".ultp-search-noresult").removeClass("active");
166
167 // Clear Button hide
168 el.find(".ultp-search-clear").removeClass("active");
169 $(`.result-data.ultp-block-${blockId}`)
170 .find(".ultp-search-clear")
171 .removeClass("active");
172 } else {
173 // Clear Button Show
174 el.find(".ultp-search-clear").addClass("active");
175 $(`.result-data.ultp-block-${blockId}`)
176 .find(".ultp-search-clear")
177 .addClass("active");
178 }
179 };
180
181 // View All Result
182 $(document).on("click", ".ultp-viewall-results", function (e) {
183 postPages++;
184 const blockId = $(this).closest(".result-data").data("blockid");
185 searchResultAPI(
186 $(this),
187 $(`.ultp-block-${blockId} .ultp-searchres-input`).val(),
188 blockId,
189 false
190 );
191 });
192
193 // Outside Click Close Popup [Done]
194 if ($(".wp-block-ultimate-post-advanced-search").length > 0) {
195 $(document).on("click", function (e) {
196 if (
197 !$(e.target).closest(".ultp-searchpopup-icon").length &&
198 !$(e.target).closest(".ultp-searchres-input").length
199 ) {
200 if (!$(e.target).closest(".result-data.popup-active").length) {
201 $(".result-data").removeClass("popup-active");
202 }
203 }
204 if (!$(e.target).closest(".ultp-search-frontend").length) {
205 if (!$(e.target).closest(".result-data.popup-active").length) {
206 $(".result-data").removeClass("popup-active");
207 }
208 }
209 });
210 }
211
212 // Enter Key In Search Box
213 $(document).on("keyup", ".ultp-searchres-input", function (e) {
214 const blockId = $(this)
215 .closest(".ultp-search-inputwrap")
216 .find(".ultp-search-clear")
217 .data("blockid");
218 const goSearch = $(
219 `.wp-block-ultimate-post-advanced-search.ultp-block-${blockId}`
220 )
221 .find(".ultp-search-frontend")
222 .data("gosearch");
223 const newTabData = $(
224 `.wp-block-ultimate-post-advanced-search.ultp-block-${blockId}`
225 )
226 .find(".ultp-search-frontend")
227 .data("enablenewtab");
228 let tabTarget = "_self";
229 if (newTabData) {
230 tabTarget = "_blank";
231 }
232 if (goSearch) {
233 if (e.key == "Enter" && $(this).val().length > 2) {
234 const el = $(
235 `.wp-block-ultimate-post-advanced-search.ultp-block-${blockId}`
236 ).find(".ultp-search-frontend");
237 let exclude =
238 typeof el.data("searchposttype") !== "string" &&
239 el.data("searchposttype")?.length > 0 &&
240 el?.data("searchposttype");
241 exclude = exclude.length
242 ? `&ultp_exclude=${JSON.stringify(
243 exclude.map((e) => {
244 return e.value;
245 })
246 )}`
247 : "";
248 window.open(
249 `${ultp_data_frontend.home_url}/?s=${$(this).val()}${exclude}`,
250 tabTarget
251 );
252 }
253 }
254 });
255
256 // Search Button Click Event
257 $(document).on("click", ".ultp-search-button", function (e) {
258 const blockId = $(this)
259 .closest(".ultp-searchform-content")
260 .find(".ultp-search-clear")
261 .data("blockid");
262 const goSearch = $(
263 `.wp-block-ultimate-post-advanced-search.ultp-block-${blockId}`
264 )
265 .find(".ultp-search-frontend")
266 .data("gosearch");
267 const newTabData = $(
268 `.wp-block-ultimate-post-advanced-search.ultp-block-${blockId}`
269 )
270 .find(".ultp-search-frontend")
271 .data("enablenewtab");
272 let tabTarget = "_self";
273 if (newTabData) {
274 tabTarget = "_blank";
275 }
276 if (goSearch) {
277 const el = $(
278 `.wp-block-ultimate-post-advanced-search.ultp-block-${blockId}`
279 ).find(".ultp-search-frontend");
280 let exclude =
281 typeof el.data("searchposttype") !== "string" &&
282 el.data("searchposttype")?.length > 0 &&
283 el?.data("searchposttype");
284 exclude = exclude.length
285 ? `&ultp_exclude=${JSON.stringify(
286 exclude.map((e) => {
287 return e.value;
288 })
289 )}`
290 : "";
291 window.open(
292 `${ultp_data_frontend.home_url}/?s=${$(this)
293 .closest(".ultp-searchform-content")
294 .find(".ultp-searchres-input")
295 .val()}${exclude}`,
296 tabTarget
297 );
298 } else {
299 $(`.result-data.ultp-block-${blockId}`).addClass("popup-active");
300 }
301 });
302
303 // Search Input Click Popup Show
304 $(document).on("click", ".ultp-searchres-input", function (e) {
305 const blockId = $(this)
306 .closest(".ultp-searchform-content")
307 .find(".ultp-search-clear")
308 .data("blockid");
309 $(".result-data").removeClass("popup-active");
310 $(`.result-data.ultp-block-${blockId}`).addClass("popup-active");
311 });
312
313 // Resize Window Popup Position Reset
314 $(window).on("resize", function () {
315 if ($(".ultp-search-result").length > 0) {
316 $(".ultp-search-frontend").each(function (el) {
317 handleSetPosition($(el));
318 });
319 }
320 });
321
322 // Popup Top/Left Position and Append Result Content
323 const handleSetPosition = (el, newBlock = false) => {
324 const blockId = el.data("blockid");
325 const popupType = el.data("popuptype");
326 const popupposition = el.data("popupposition");
327
328 if (newBlock) {
329 const viewAllResult = el.data("allresult");
330 const searchResultTemplate = `<div class="ultp-search-result" data-image=${
331 el.data("image") || false
332 } data-author=${el.data("author") || false} data-date=${
333 el.data("date") || false
334 } data-excerpt=${
335 el.data("excerpt") || false
336 } data-excerptlimit=${el.data("excerptlimit")} data-allresult=${
337 viewAllResult || false
338 } data-catenable=${el.data("catenable") || false} data-postno=${
339 el.data("postno") || false
340 } data-gosearch=${el.data("gosearch") || false} data-popupposition=${
341 popupposition || false
342 }>
343 <div class="ultp-result-data"></div>
344 <div class="ultp-search-result__item ultp-search-noresult">${el.data(
345 "noresultext"
346 )}</div>
347 <div class="ultp-search-result__item ultp-result-loader"></div>
348 ${
349 viewAllResult
350 ? `<div class="ultp-viewall-results ultp-search-result__item">${el.data(
351 "viewmoretext"
352 )}<span></span></div><div class="ultp-search-result__item ultp-viewmore-loader"></div>`
353 : ""
354 }
355 </div>`;
356
357 if (popupType) {
358 const canvas = $(`.ultp-block-${blockId}`)
359 .find(".ultp-search-canvas")
360 .detach();
361 $("body").append(
362 `<div class="result-data ultp-block-${blockId} ultp-search-animation-${popupType}" data-blockid=${blockId}><div class="ultp-search-canvas">${
363 canvas.html() + (el.data("ajax") ? searchResultTemplate : "")
364 }</div></div>`
365 );
366 } else {
367 $("body").append(
368 `<div class="result-data ultp-block-${blockId}" data-blockid=${blockId}>${searchResultTemplate}</div>`
369 );
370 }
371 }
372
373 let posSelector = "";
374 if (!popupType) {
375 posSelector = el.find(".ultp-searchform-content");
376 const elementPosition = posSelector.offset();
377 return $(`body > .ultp-block-${blockId}`).css({
378 width: `${posSelector.width()}px`,
379 top: `${elementPosition?.top + posSelector.height()}px`,
380 left: `${elementPosition?.left}px`,
381 });
382 }
383 if (popupType == "popup") {
384 posSelector = el.find(".ultp-searchpopup-icon");
385 const elementPosition = posSelector.offset();
386 const contentPosition =
387 popupposition == "right"
388 ? elementPosition?.left > $(`body > .ultp-block-${blockId}`).width()
389 : $(document).width() - elementPosition?.left >
390 $(`body > .ultp-block-${blockId}`).width();
391 let right = "";
392 let left = "";
393 if (popupposition == "right") {
394 right = contentPosition
395 ? $(document).width() -
396 elementPosition?.left -
397 posSelector.outerWidth() +
398 "px"
399 : "unset";
400 left = contentPosition
401 ? "auto"
402 : elementPosition?.left +
403 (popupposition == "right" ? 10 : 0) +
404 "px";
405 } else {
406 right = contentPosition
407 ? "unset"
408 : $(document).width() -
409 elementPosition?.left -
410 posSelector.outerWidth() +
411 "px";
412 left = contentPosition
413 ? elementPosition?.left + (popupposition == "right" ? 10 : 0) + "px"
414 : "auto";
415 }
416 return $(`body > .ultp-block-${blockId}`).css({
417 top: `${elementPosition?.top + posSelector.outerHeight()}px`,
418 right: right,
419 left: left,
420 });
421 }
422 };
423 }
424 })(jQuery);
425