|
1
|
|
-!function(e){function t(t,i){this.options=e.extend({ID:"",name:"Add new page"},i||{});const a=e(t),n=a.find("select"),s=a.find(".list-pages-wrapper"),o=a.find(".quick-add-page-actions"),r=a.find(".quick-add-page-inline");n.on("change",(function(){o.addClass("hide-if-js"),"add_new_page"===this.value?(s.addClass("hide-if-js"),r.removeClass("hide-if-js").find("input").trigger("focus").val("")):parseInt(this.value)&&(o.find("a.edit-page").attr("href","post.php?post="+this.value+"&action=edit"),o.find("a.view-page").attr("href",lpGlobalSettings.siteurl+"?page_id="+this.value),o.removeClass("hide-if-js"),n.attr("data-selected",this.value))})),n.css("width",n.width()+50).find("option").each((function(){e(this).html(e(this).html().replace(/ /g,""))})),n.select2({allowClear:!0}),n.on("select2:select",(function(e){e.params.data})),a.on("click",".quick-add-page-inline button",(function(){const t=e(this),i=r.find("input"),a=i.val();if(!a)return alert("Please enter the name of page"),void i.trigger("focus");t.prop("disabled",!0),e.ajax({url:lpGlobalSettings.ajax,data:{action:"learnpress_create_page",page_name:a},type:"post",dataType:"html",success(i){(i=LP.parseJSON(i)).page?(!function(t){const i=e('<option value="'+t.ID+'">'+t.name+"</option>"),a=e.inArray(t.ID+"",t.positions);e(".learn-press-dropdown-pages select").each((function(){const n=e(this),s=i.clone();0==a?e("option",n).each((function(){if(parseInt(e(this).val()))return s.insertBefore(e(this)),!1})):a==t.positions.length-1?n.append(s):s.insertAfter(e('option[value="'+t.positions[a-1]+'"]',n))}))}({ID:i.page.ID,name:i.page.post_title,positions:i.positions}),n.val(i.page.ID).trigger("focus"),n.val(i.page.ID).trigger("change"),r.addClass("hide-if-js")):i.error&&alert(i.error),t.prop("disabled",!1),s.removeClass("hide-if-js")}})})).on("click",".quick-add-page-inline a",(function(e){e.preventDefault(),r.addClass("hide-if-js"),n.val(n.attr("data-selected")+"").removeAttr("disabled").trigger("change"),s.removeClass("hide-if-js")})).on("click",".button-quick-add-page",(function(e){n.val("add_new_page").trigger("change")})).on("keypress keydown",'.quick-add-page-inline input[type="text"]',(function(t){"Enter"==t.key&&"keypress"==t.type?(t.preventDefault(),e(this).siblings("button").trigger("click")):"Escape"==t.key&&"keydown"==t.type&&e(this).siblings("a").trigger("click")}))}e.fn.LP("DropdownPages",(function(){return e.each(this,(function(){let i=e(this).data("DropdownPages");return i||(i=new t(this,{}),e(this).data("DropdownPages",i)),i}))}))}(jQuery); |
|
1
|
+import*as lpUtils from"lpAssetsJsPath/utils.js";import*as lpToastify from"lpAssetsJsPath/lpToastify.js";export class DropdownPages{static selectors={elDropdown:".learn-press-dropdown-pages",elSelect:"select",elListWrap:".list-pages-wrapper",elActions:".quick-add-page-actions",elForm:".quick-add-page-inline",elButtonQuickAdd:".button-quick-add-page",elInput:'.quick-add-page-inline input[type="text"]',elButtonSubmit:".quick-add-page-inline button",elButtonCancel:".quick-add-page-inline a"};constructor(){this.elDropdowns=[]}init(){this.elDropdowns=document.querySelectorAll(DropdownPages.selectors.elDropdown),this.elDropdowns.length&&this.events()}events(){DropdownPages._loadedEvents||(DropdownPages._loadedEvents=this,lpUtils.eventHandlers("change",[{selector:DropdownPages.selectors.elDropdown,class:this,callBack:this.handleChangeSelect.name}]),lpUtils.eventHandlers("click",[{selector:DropdownPages.selectors.elButtonSubmit,class:this,callBack:this.handleSubmit.name},{selector:DropdownPages.selectors.elButtonCancel,class:this,callBack:this.handleCancel.name},{selector:DropdownPages.selectors.elButtonQuickAdd,class:this,callBack:this.handleQuickAdd.name}]),lpUtils.eventHandlers("keydown",[{selector:DropdownPages.selectors.elInput,class:this,callBack:this.handleInputEnter.name,checkIsEventEnter:!0},{selector:DropdownPages.selectors.elInput,class:this,callBack:this.handleInputEscape.name}]))}handleChangeSelect(e){const{e:t}=e,s=t.target;if(!s.matches(DropdownPages.selectors.elSelect))return;const o=s.closest(DropdownPages.selectors.elDropdown);if(!o)return;const l=o.querySelector(DropdownPages.selectors.elActions);if(l&&l.classList.add("hide-if-js"),parseInt(s.value,10)){if(l){const e=l.querySelector("a.edit-page"),t=l.querySelector("a.view-page");e&&(e.href=`post.php?post=${s.value}&action=edit`),t&&(t.href=`${window.lpGlobalSettings.siteurl}?page_id=${s.value}`),l.classList.remove("hide-if-js")}s.setAttribute("data-selected",s.value)}}openQuickAddForm(e){const t=e.querySelector(DropdownPages.selectors.elListWrap),s=e.querySelector(DropdownPages.selectors.elForm);if(t&&t.classList.add("hide-if-js"),s){s.classList.remove("hide-if-js");const e=s.querySelector("input");e&&(e.value="",e.focus())}}handleSubmit(e){const{e:t}=e;t.preventDefault();const s=t.target.closest(DropdownPages.selectors.elButtonSubmit);if(!s)return;const o=s.closest(DropdownPages.selectors.elForm);if(!o)return;const l=o.closest(DropdownPages.selectors.elDropdown);if(!l)return;const n=o.querySelector("input"),a=l.querySelector(DropdownPages.selectors.elListWrap),r=n?n.value.trim():"";if(!r)return alert("Please enter the name of page"),void(n&&n.focus());s.disabled=!0;let c="";const i=l.querySelector("select");if(c=i?i.name:"",!(window.lpGlobalSettings&&window.lpGlobalSettings.ajax&&window.lpDataAdmin&&window.lpDataAdmin.nonce))return void(s.disabled=!1);const d=new FormData;d.append("action","learnpress_create_page"),d.append("page_name",r),d.append("field_name",c),d.append("nonce",window.lpDataAdmin.nonce),fetch(window.lpGlobalSettings.ajax,{method:"POST",body:d}).then(e=>e.json()).then(e=>{const{message:t,status:s,data:l}=e;if("success"!==s)throw new Error(t);o.classList.add("hide-if-js"),lpToastify.show(t,"success"),setTimeout(()=>{window.location.reload()},1e3)}).catch(e=>{lpToastify.show(e.message,"error")}).finally(()=>{s.disabled=!1,a&&a.classList.remove("hide-if-js")})}addNewPageToList(e){const{ID:t,name:s,positions:o}=e,l=document.createElement("option");l.value=t,l.textContent=s;const n=o.indexOf(t+"");document.querySelectorAll(`${DropdownPages.selectors.elDropdown} ${DropdownPages.selectors.elSelect}`).forEach(e=>{const t=l.cloneNode(!0);if(0===n){const s=e.querySelectorAll("option");for(const e of s)if(parseInt(e.value,10)){e.before(t);break}}else if(n===o.length-1)e.appendChild(t);else{const s=e.querySelector(`option[value="${o[n-1]}"]`);s?s.after(t):e.appendChild(t)}})}handleCancel(e){const{e:t}=e;t.preventDefault();const s=t.target.closest(DropdownPages.selectors.elButtonCancel);if(!s)return;const o=s.closest(DropdownPages.selectors.elForm);if(!o)return;const l=o.closest(DropdownPages.selectors.elDropdown);if(!l)return;const n=l.querySelector(DropdownPages.selectors.elSelect),a=l.querySelector(DropdownPages.selectors.elListWrap),r=n?n.getAttribute("data-selected"):"";o.classList.add("hide-if-js"),n&&(n.value=r+"",n.removeAttribute("disabled"),n.dispatchEvent(new Event("change",{bubbles:!0}))),a&&a.classList.remove("hide-if-js")}handleQuickAdd(e){const{e:t}=e,s=t.target.closest(DropdownPages.selectors.elButtonQuickAdd);if(!s)return;const o=s.closest(DropdownPages.selectors.elDropdown);o&&this.openQuickAddForm(o)}handleInputEnter(e){const{e:t}=e;t.preventDefault();const s=t.target.closest(DropdownPages.selectors.elForm);if(!s)return;const o=s.querySelector("button");o&&o.click()}handleInputEscape(e){const{e:t}=e;if("Escape"!==t.key)return;const s=t.target.closest(DropdownPages.selectors.elForm);if(!s)return;const o=s.querySelector("a");o&&o.click()}} |