|
1
|
|
-!function(e){function t(t,i){this.options=e.extend({ID:"",name:"Add new page"},i||{});const n=e(t),a=n.find("select"),s=n.find(".list-pages-wrapper"),o=n.find(".quick-add-page-actions"),d=n.find(".quick-add-page-inline");a.on("change",function(){o.addClass("hide-if-js"),"add_new_page"===this.value?(s.addClass("hide-if-js"),d.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"),a.attr("data-selected",this.value))}),n.on("click",".quick-add-page-inline button",function(){const t=e(this),i=d.find("input"),n=i.val();if(!n)return alert("Please enter the name of page"),void i.trigger("focus");t.prop("disabled",!0);const a=t.closest("tr");let o="";a.length&&(o=a.find(".field_name").attr("name")),e.ajax({url:lpGlobalSettings.ajax,data:{action:"learnpress_create_page",page_name:n,field_name:o,nonce:lpDataAdmin.nonce},type:"post",dataType:"html",success(i){(i=LP.parseJSON(i)).page?(!function(t){const i=e('<option value="'+t.ID+'">'+t.name+"</option>"),n=e.inArray(t.ID+"",t.positions);e(".learn-press-dropdown-pages select").each(function(){const a=e(this),s=i.clone();0===n?e("option",a).each(function(){if(parseInt(e(this).val()))return s.insertBefore(e(this)),!1}):n===t.positions.length-1?a.append(s):s.insertAfter(e('option[value="'+t.positions[n-1]+'"]',a))})}({ID:i.page.ID,name:i.page.post_title,positions:i.positions}),window.location.reload(),d.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(),d.addClass("hide-if-js"),a.val(a.attr("data-selected")+"").removeAttr("disabled").trigger("change"),s.removeClass("hide-if-js")}).on("click",".button-quick-add-page",function(e){a.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()}} |