PluginProbe
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses / 4.4.9
LearnPress – WordPress LMS Plugin for Create and Sell Online Courses v4.4.9
4.4.9 4.4.8 4.4.7 4.4.6 4.4.5 4.4.4 4.4.3 4.4.2 4.4.1 4.4.0 4.3.9.1 4.3.9 4.3.8 4.3.7 4.1.6.9 4.1.6.9.1 4.1.6.9.2 4.1.6.9.3 4.1.6.9.4 4.1.7 4.1.7.1 4.1.7.2 4.1.7.3 4.1.7.3.1 4.1.7.3.2 All 140 releases
learnpress / assets / js / frontend / course-filter.min.js

course-filter.min.js in LearnPress – WordPress LMS Plugin for Create and Sell Online Courses 4.4.9, at assets/js/frontend/course-filter.min.js

1 lines 6.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import API from"../api";import{lpAddQueryArgs,lpFetchAPI,lpGetCurrentURLNoParam}from"../utils";const classCourseFilter="lp-form-course-filter",classProcessing="processing";let timeOutSearch,controller,signal;document.addEventListener("submit",(function(e){const t=e.target;t.classList.contains(classCourseFilter)&&(e.preventDefault(),window.lpCourseFilter.submit(t))})),document.addEventListener("click",(function(e){const t=e.target;t.classList.contains("course-filter-reset")&&(e.preventDefault(),window.lpCourseFilter.reset(t)),window.lpCourseFilter.showHideSearchResult(t),window.lpCourseFilter.triggerInputChoice(t)})),document.addEventListener("keyup",(function(e){e.preventDefault();const t=e.target;t.classList.contains("lp-course-filter-search")&&window.lpCourseFilter.searchSuggestion(t)})),window.lpCourseFilter={searchSuggestion:e=>{if(1!==parseInt(e.dataset.searchSuggest||1))return;const t=e.value.trim(),r=e.closest(`.${classCourseFilter}`),s=r.querySelector(".lp-loading-circle");if(void 0!==timeOutSearch&&clearTimeout(timeOutSearch),t&&t.length>2)s.classList.remove("hide"),timeOutSearch=setTimeout((function(){window.lpCourseFilter.callAPICourseSuggest(t,(e=>{document.querySelector(".lp-course-filter-search-result").innerHTML=e.data.content,s.classList.add("hide")}))}),500);else{r.querySelector(".lp-course-filter-search-result").innerHTML="",s.classList.add("hide")}},callAPICourseSuggest:(e,t,r)=>{void 0!==controller&&controller.abort(),controller=new AbortController,signal=controller.signal;let s=API.frontend.apiCourses+"?c_search="+e+"&c_suggest=1";lpData.urlParams.hasOwnProperty("lang")&&(s+="&lang="+lpData.urlParams.lang);let a={method:"GET"};0!==parseInt(lpData.user_id)&&(a={...a,headers:{"X-WP-Nonce":lpData.nonce}}),fetch(s,{...a,signal:signal}).then((e=>e.json())).then((e=>{void 0!==t&&t(e)})).catch((e=>{console.log(e)})).finally((()=>{void 0!==r&&r()}))},loadWidgetFilterREST:e=>{const t=e.closest(".learnpress-widget-wrapper:not(.processing)");if(!t)return;t.classList.add("processing");const r=e.closest("div[data-widget]");let s=null;if(r){const e=JSON.parse(r.dataset.widget),t=JSON.parse(e.instance).class_list_courses_target||".lp-list-courses-default";s=document.querySelector(t)}const a=t.dataset.widget?JSON.parse(t.dataset.widget):"",l=lpData.urlParams.lang?`?lang=${lpData.urlParams.lang}`:"",n=API.frontend.apiWidgets+l,o=new FormData(e),c={paged:1},i=t.querySelector(".lp-widget-loading-change");i.style.display="block";for(const e of o.entries()){const t=e[0],r=o.getAll(t);if(!c.hasOwnProperty(t)){let e=r;"object"==typeof r&&(e=r.join(",")),c[t]=e}}void 0!==lpData.urlParams.page_term_id_current?c.page_term_id_current=lpData.urlParams.page_term_id_current:void 0!==lpData.urlParams.page_tag_id_current&&(c.page_tag_id_current=lpData.urlParams.page_tag_id_current);const u={params_url:c};lpData.urlParams.hasOwnProperty("lang")?u.params_url.lang=lpData.urlParams.lang:lpData.urlParams.hasOwnProperty("pll-current-lang")&&(u.params_url["pll-current-lang"]=lpData.urlParams["pll-current-lang"]);const p={method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...a,...u})};0!==parseInt(lpData.user_id)&&(p.headers["X-WP-Nonce"]=lpData.nonce);lpFetchAPI(n,p,{before:()=>{},success:r=>{const{data:s,status:a,message:l}=r;s&&"success"===a?e.innerHTML=s:l&&t.insertAdjacentHTML("afterbegin",`<div class="lp-ajax-message error" style="display:block">${l}</div>`)},error:e=>{},completed:()=>{const e=setInterval((()=>{s.classList.contains("processing")||(clearInterval(e),i.style.display="none",t.classList.remove("processing"))}),1)}})},submit:e=>{let t=API.frontend.apiAJAX;const r=new FormData(e),s=document.querySelector(".learn-press-courses"),a=e.closest("div[data-widget]");let l=null;if(a){const e=JSON.parse(a.dataset.widget),t=JSON.parse(e.instance).class_list_courses_target||".lp-list-courses-default";l=document.querySelector(t)}const n={paged:1};void 0!==window.lpCourseList&&window.lpCourseList.updateEventTypeBeforeFetch("filter");for(const e of r.entries()){const t=e[0],s=r.getAll(t);n.hasOwnProperty(t)||(n[t]=s.join(","))}if(void 0!==lpData.urlParams.page_term_id_current&&(n.page_term_id_current=lpData.urlParams.page_term_id_current),void 0!==lpData.urlParams.page_tag_id_current&&(n.page_tag_id_current=lpData.urlParams.page_tag_id_current),lpData.urlParams.hasOwnProperty("lang")?(n.lang=lpData.urlParams.lang,t=lpAddQueryArgs(t,{lang:lpData.urlParams.lang})):lpData.urlParams.hasOwnProperty("pll-current-lang")&&(n["pll-current-lang"]=lpData.urlParams["pll-current-lang"],t=lpAddQueryArgs(t,{lang:lpData.urlParams["pll-current-lang"]})),"undefined"!=typeof lpSettingCourses&&lpData.is_course_archive&&lpSettingCourses.lpArchiveLoadAjax&&s&&!l&&void 0!==window.lpCourseList)window.lpCourseList.triggerFetchAPI(n);else if(l){if(l.classList.contains("processing"))return;l.classList.add("processing");const r=l.querySelector(".lp-target"),s={...JSON.parse(r.dataset.send)},a=l.closest("div:not(.lp-target)").querySelector(".lp-loading-change");a&&(a.style.display="block");const o=e.elements;for(let e=0;e<o.length;e++)n.hasOwnProperty(o[e].name)?s.args[o[e].name]=n[o[e].name]:delete s.args[o[e].name];s.args.paged=1,r.dataset.send=JSON.stringify(s),lpData.urlParams=n,window.history.pushState({},"",lpAddQueryArgs(lpGetCurrentURLNoParam(),lpData.urlParams)),window.lpCourseFilter.loadWidgetFilterREST(e);const c={success:e=>{const{status:t,message:s,data:a}=e;r.innerHTML=a.content||""},error:e=>{console.log(e)},completed:()=>{l.classList.remove("processing"),a&&(a.style.display="none")}};window.lpAJAXG.fetchAPI(t,s,c)}else{const e=lpData.urlParams.page_term_url||lpData.courses_url||"",t=new URL(e);Object.keys(n).forEach((e=>{t.searchParams.set(e,n[e])})),document.location.href=t.href}},reset:e=>{const t=e.closest(`.${classCourseFilter}`);if(!t)return;const r=t.querySelector(".course-filter-submit"),s=t.querySelector(".lp-course-filter-search-result"),a=t.querySelector(".lp-course-filter-search");t.reset(),s&&(s.innerHTML=""),a&&(a.value="");for(let e=0;e<t.elements.length;e++)t.elements[e].removeAttribute("checked");r.click()},showHideSearchResult:e=>{const t=document.querySelector(".lp-course-filter-search-result");if(!t)return;e.closest(".lp-course-filter-search-result")||e.classList.contains("lp-course-filter-search-result")||e.classList.contains("lp-course-filter-search")?t.style.display="block":t.style.display="none"},triggerInputChoice:e=>{const t=e.closest(".lp-course-filter__field");if(t)if("INPUT"===e.tagName){const e=t.closest("div[data-widget]");let r=null;if(e){const s=JSON.parse(e.dataset.widget),a=JSON.parse(s.instance).class_list_courses_target||".lp-list-courses-default";r=document.querySelector(a);t.closest(`.${classCourseFilter}`).querySelector(".course-filter-submit").click()}}else t.querySelector("input").click()}};