PATH:
home
/
lab2454c
/
costbloc.com
/
Modules
/
CMS
/
Resources
/
assets
/
js
"use strict";var pendingForm;const alertBox=$(".js-alert");$((function(){$("#sortable").sortable({axis:"y",cursor:"move",cancel:".dd-content"})})),$(document).on("submit","form#layout_selector",(function(e){e.preventDefault();let url=this.action.replace("__file",this.querySelector("#l_layout").value);updateFormButton(this),ajaxRequest($(this),url,replaceForm)})),$(document).on("change",".category_type",(function(){"selectedCategories"==this.value?this.closest("form").querySelector(".cats").classList.remove("d-none"):this.closest("form").querySelector(".cats").classList.add("d-none")})),$(document).on("change","#brand_type",(function(){"selectedBrands"==this.value?this.closest("form").querySelector(".cats").classList.remove("d-none"):this.closest("form").querySelector(".cats").classList.add("d-none")})),$(document).on("change","#blog_type",(function(){"selectedBlogs"==this.value?this.closest("form").querySelector(".cats").classList.remove("d-none"):this.closest("form").querySelector(".cats").classList.add("d-none")})),$(document).on("submit","form.component_form",(function(e){e.preventDefault();let url=this.action.replace("__id",__page);updateFormButton(getDraggableParent(this)),$.makeAjaxCall($(this),url,{success:updateComponent,failed:updateComponent,type:"post"})})),$(document).on("keyup",".section_name",(function(){let parent;getDraggableParent(this).find(".header-title").html(filterXSS(this.value))})),$(document).on("click","#update_page",(function(e){$(this).find(".loading-spinner").toggleClass("d-none");var counter=0;$("#sortable").find("form.component_form").each((function(){let data=$(this).find("input,select,textarea").serialize();$("#internal_form").append(`<input type="hidden" class="temp-input" name="component[${counter++}]" value="${data}">`)})),$.makeAjaxCall($("#internal_form"),__savePageUrl,{success:pageUpdated,type:"post"})})),$(document).on("click","#add-new-widget",(function(){sortable.append(selector),$("html, body").animate({scrollTop:$(document).height()},"slow"),updateSelect2Fields()})),$(document).on("change","#l_category",(function(){$(this).closest("form").find(".layoutBlocks").addClass("d-none"),$(this).closest("form").find("#"+this.value).removeClass("d-none")}));const ajaxRequest=(form,url,callBack,method="get")=>{let serializedData={};if(form){var $inputs=form.find("input, select, button, textarea");form.serializeArray().forEach(x=>{let[name,value]=[x.name,x.value];name.endsWith("[]")?(name=name.slice(0,-2),serializedData[name]||(serializedData[name]=[]),serializedData[name].push(value)):serializedData[name]=value}),$inputs.prop("disabled",!0)}pendingForm=form,$.ajax({url:url,type:method,dataType:"json",data:serializedData,success:function(data){callBack(form,data.body),$inputs.prop("disabled",!1),ajaxUpdated(),removeButtonLoader()},error:function(xhr,status,error){throw $inputs.prop("disabled",!1),operationFailed(jsLang("Operation failed.")),updateAjaxMessage(form,jsLang("Operation failed."),"danger"),updateFormButton(form),ajaxFailed(),removeButtonLoader(),error}})},replaceForm=(child,html)=>{let parent=getDraggableParent(child);parent.find(".header-title").html(html.title),parent.find(".header-text").append(html.header),parent.attr("data-id",html.level),parent.find(".dd-content").remove(),parent.append(html.html),$("#sortable").trigger("sortstop"),$("#update_page .loading-spinner").toggleClass("d-none"),operationSuccess(jsLang("Section added. Please fill up the section information and save.")),updateSelect2Fields()},updateComponent=(param,response)=>{let $child=$(param.form);$child.closest(".ui-state-default").find(".delete-button").attr("data-component-id",response.body),$child.find(".component").prop("value",response.body),updateFormButton(getDraggableParent($child)),updateAjaxMessage(getDraggableParent($child),jsLang("Section updated.")),operationSuccess(jsLang("Section Updated"))},getDraggableParent=child=>$(child).closest(".ui-state-default"),deletedGrid=response=>{response?operationSuccess(jsLang("Section deleted")):operationFailed(jsLang("Couldn't delete the section"))},updateCustomForm=value=>{document.querySelector("#internal_form #data").value=value},pageUpdated=(form,value)=>{$("#update_page .loading-spinner").toggleClass("d-none"),$(".temp-input").remove(),window.location.reload()},operationSuccess=msg=>{showNotification("success",jsLang(msg))},operationFailed=msg=>{showNotification("danger",jsLang(msg))},showNotification=(css_class,msg)=>{alertBox.find(".alertText").html(msg),alertBox.find(".alert").attr("class",`alert alert-${css_class}`),alertBox.removeClass("d-none")};$(".close").click((function(){alertBox.addClass("d-none")}));const showSliderOptions=radio=>{let p=getDraggableParent(radio);$(p).find(".sliderOptions").removeClass("d-none").addClass("d-flex"),hideBannerOptions(p),hideFlashOptions(p)},hideSliderOptions=p=>{$(p).find(".sliderOptions").addClass("d-none").removeClass("d-flex")},showBannerOptions=radio=>{let p=getDraggableParent(radio);$(p).find(".bannerOptions").removeClass("d-none").addClass("d-flex"),hideSliderOptions(p),hideFlashOptions(p)},hideBannerOptions=p=>{$(p).find(".bannerOptions").removeClass("d-flex").addClass("d-done")},showFlashOptions=radio=>{let p=getDraggableParent(radio);$(p).find(".flashOptions").addClass("d-flex").removeClass("d-none"),hideSliderOptions(p),hideBannerOptions(p)},hideFlashOptions=p=>{$(p).find(".flashOptions").addClass("d-none").removeClass("d-flex")},hideAllOptions=radio=>{let p=getDraggableParent(radio);hideSliderOptions(p),hideBannerOptions(p),hideFlashOptions(p),toggleSidebar(radio,!1)},updateSelect2Fields=()=>{$("select.select2").select2({placeholder:jsLang("Select an option")}),$(".select3").select2({placeholder:jsLang("Select an option")})};$(document).on("select2:select","select.select2",(function(evt){var element=evt.params.data.element,$element=$(element);$element.detach(),$(this).append($element),$(this).trigger("change")})),updateSelect2Fields(),$(document).on("change",".sidebar_options",(function(){"0"==this.value?hideAllOptions(this):"slide"==this.value?(showBannerOptions(this),toggleSidebar(this,!0)):"slider"==this.value?(showSliderOptions(this),toggleSidebar(this,!0)):"flash_sale"==this.value&&(showFlashOptions(this),toggleSidebar(this,!0)),$(".product-col").trigger("change")})),$(document).ready((function(){updateSelect2Fields(),$(".select2").on("select2:select",(function(evt){var element=evt.params.data.element,$element=$(element);$element.detach(),$(this).append($element),$(this).trigger("change")}))})),$(document).on("click",".folding",(function(){let parent=this.closest(".ui-state-default");this.classList.contains("closed")?($(parent).find(".dd-content").removeClass("card-hide"),$(this).removeClass("closed")):($(parent).find(".dd-content").addClass("card-hide"),$(this).addClass("closed"))})),$(document).on("click",".header-text",(function(){$(this).closest(".ui-state-default").find(".folding").trigger("click")})),$(document).on("click",".delete-button",(function(){$("#component-title").html(filterXSS($(this).data("component"))),deletingSection=this.closest(".ui-state-default"),deletingSectionId=$(this).data("component-id")})),$(document).on("click",".delete-section-btn",(function(){toggleDeleteLoading(),updateCustomForm(deletingSectionId),"0"===deletingSectionId||0===deletingSectionId?gridDeleted(null,!0):ajaxRequest($("#internal_form"),__gridDeleteUrl,gridDeleted,"post")}));const toggleDeleteLoading=()=>{$(".delete-loading").toggleClass("d-none")},gridDeleted=(form,data)=>{$(".modal").modal("hide"),toggleDeleteLoading(),$(".delete-section-btn .spinner-border").remove(),$(".delete-section-btn").removeClass("disabled-btn"),$(".delete-section-btn").text(jsLang("Delete")),data?(deletingSection.remove(),operationSuccess("Section deleted")):operationFailed("Section couldn't be deleted."),deletingSection=void 0,deletingSectionId=void 0},updateFormButton=form=>{$(form).find(".loading-spinner").toggleClass("d-none"),$("#update_page .loading-spinner").toggleClass("d-none")},updateAjaxMessage=(form,msg,className="success")=>{$(form).find(".message").html(msg),$(form).find(".message").addClass(`text-${className}`),setTimeout(form=>{$(form).find(".message").html("")},3e3)};$(".img-delete-icon").click((function(){let group=$(this).closest(".form-group");$(group).find(".custom-file-input").val(""),$(this).closest(".preview-image").html("")}));const toggleSidebar=(child,show=!0)=>{let parent=getDraggableParent(child);show?$(parent).find(".sidebarOption").removeClass("d-none"):$(parent).find(".sidebarOption").addClass("d-none")};$(document).on("change",".seeMore",(function(){let parent=getDraggableParent(this);$(parent).find(".moreLink").toggleClass("d-none")})),$(document).on("click",".selectable",(function(){$(this).closest("form").find(".selectable").removeClass("selectedBox"),$(this).closest("form").find("#l_layout").val($(this).data("val")),$(this).addClass("selectedBox")})),$(document).on("file-attached",".media-manager",(function(e,data){let image=data.data[0],name=$(this).data("name");$($(this).closest(".form-group")).find(".preview-image").html(imagePreview(image,name))}));const imagePreview=(image,name)=>`<div class="d-flex flex-wrap mt-2">\n <div class="position-relative border boder-1 media-box p-1 mr-2 rounded mt-2">\n <div class="position-absolute rounded-circle text-center img-remove-icon"><i class="fa fa-times"></i>\n </div>\n <img class="upl-img neg-transition-scale" class="p-1"\n src="${image.url}" alt="">\n <input type="hidden" name="${name}" value="${image.path}">\n </div>\n </div>`;$("#sortable").on("sortstop",(function(event,ui){let componentOrders;$("#sortable").sortable("toArray",{attribute:"data-id"}).forEach((className,i)=>{$(`.${className}`).val(i+1)})}));const addRowButton=(index,parent)=>`<span class="accordion-row-action add-row-btn" data-parent="${parent}" data-index="${index}"><i class="feather icon-plus"></i>\n </span>`,removeRowButton=(index,parent)=>`<span class="accordion-row-action remove-row-btn" data-parent="${parent}" data-index="${index+1}"><i class="feather icon-minus"></i>\n </span>`,getCtaForm=(index,parent)=>{let rs=getRandomString("id_");return`<div class="card cta-card mb-3">\n <div class="card-header p-2" id="headingOne">\n <div class="mb-0 ac-switch d-flex closed justify-content-between align-items-center w-full curson-pointer" data-bs-toggle="collapse" data-bs-target="#${rs}" aria-expanded="true" aria-controls="${rs}">\n <div>${jsLang("Call To Action")}</div>\n <span class="b-icon">\n <i class="feather icon-chevron-down collapse-status"></i>\n <span class="accordion-action-group">\n <span class="accordion-row-action remove-row-btn"\n data-index="${index+1}" data-parent="${parent}" data-parent="${parent}"><i\n class="feather icon-minus"></i></span>\n <span class="accordion-row-action add-row-btn" data-index="${index+1}" data-parent="${parent}">\n <i class="feather icon-plus"></i>\n </span>\n </span>\n </span>\n </div>\n </div>\n <div id="${rs}" class="card-body parent-class collapse show" aria-labelledby="headingOne" data-parent=".${parent}" style="">\n <div class="form-group row">\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Upper Subtitle")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" value="" name="cta[${index}][upper_st]">\n </div>\n </div>\n </div>\n\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Lower Subtitle")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" value="" name="cta[${index}][lower_st]">\n </div>\n </div>\n </div>\n\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Title")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" value="" name="cta[${index}][title]">\n\n </div>\n </div>\n </div>\n\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Image")}</label>\n <div class="col-md-12">\n <div class="custom-file media-manager" data-val="single" id="image-status" data-name="cta[${index}][image]">\n <input class="custom-file-input form-control d-none inputFieldDesign" id="validatedCustomFile${uniqueNumber}" maxlength="50" accept="image/*" value="">\n <label class="custom-file-label overflow_hidden position-relative d-flex align-items-center" for="validatedCustomFile${uniqueNumber}">${jsLang("Upload image")}</label>\n </div>\n <div class="preview-image">\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Button Text")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" value="" name="cta[${index}][btn_text]">\n </div>\n </div>\n </div>\n\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Button Link")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" value="" name="cta[${index}][btn_link]">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>`},getSliderForm=(index,parent)=>{let rs=getRandomString("id_");return`<div class="card cta-card mb-3">\n <div class="card-header p-2" id="headingOne">\n <div class="mb-0 ac-switch d-flex closed justify-content-between align-items-center w-full curson-pointer collapsed" data-bs-toggle="collapse" data-bs-target="#${rs}" aria-expanded="false" aria-controls="${rs}">\n <div>${jsLang("Slider")}</div>\n <span class="b-icon">\n <i class="feather icon-chevron-down collapse-status"></i>\n <span class="accordion-action-group">\n <span class="accordion-row-action remove-row-btn"\n data-index="${index+1}" data-parent="${parent}" data-parent="${parent}"><i\n class="feather icon-minus"></i></span>\n <span class="accordion-row-action add-row-btn" data-index="${index+1}" data-parent="${parent}">\n <i class="feather icon-plus"></i>\n </span>\n </span>\n </span>\n </div>\n </div>\n <div id="${rs}" class="card-body collapse" aria-labelledby="headingOne" data-parent=".${parent}" style="">\n <div class="form-group row">\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Upper Subtitle")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" name="slider[${index}][u_subtitle]">\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Lower Subtitle")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" name="slider[${index}][l_subtitle]">\n </div>\n </div>\n </div>\n <div class="col-md-12 row parent-class m-0 p-0">\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Title")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" name="slider[${index}][title]">\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Image")}</label>\n <div class="col-sm-12">\n <div class="custom-file media-manager" data-name="slider[${index}][image]" data-val="single" id="image-status">\n <input class="custom-file-input form-control d-none inputFieldDesign" id="validatedCustomFile${uniqueNumber}" maxlength="50" accept="image/*">\n <label class="custom-file-label overflow_hidden position-relative d-flex align-items-center" for="validatedCustomFile${uniqueNumber}">${jsLang("Upload image")}</label>\n </div>\n <div class="preview-image">\n\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Button Text")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" value="" name="slider[${index}][button_text]">\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Link")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" value="" name="slider[${index}][button_link]">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>`},getIconboxForm=(index,parent)=>{let rs=getRandomString("id_");return`<div class="card cta-card mb-3">\n <div class="card-header p-2" id="headingOne">\n <div class="mb-0 ac-switch d-flex closed justify-content-between align-items-center w-full curson-pointer" data-bs-toggle="collapse" data-bs-target="#${rs}" aria-expanded="true" aria-controls="${rs}">\n <div>${jsLang("Icon Box")}</div>\n <span class="b-icon">\n <i class="feather icon-chevron-down collapse-status"></i>\n <span class="accordion-action-group">\n <span class="accordion-row-action remove-row-btn"\n data-index="${index+1}" data-parent="${parent}" data-parent="${parent}"><i\n class="feather icon-minus"></i></span>\n <span class="accordion-row-action add-row-btn" data-index="${index+1}" data-parent="${parent}">\n <i class="feather icon-plus"></i>\n </span>\n </span>\n </span>\n </div>\n </div>\n <div id="${rs}" class="card-body parent-class collapse show" aria-labelledby="headingOne" data-parent=".${parent}" style="">\n <div class="form-group row">\n <div class="col-md-12">\n <div class="form-group row">\n <div class="col-md-12">\n <div class="preview-image">\n </div>\n </div>\n <label class="col-sm-12 control-label">${jsLang("Icon")}</label>\n <div class="col-md-12">\n <div class="custom-file media-manager" data-name="iconbox[${index}][image]" data-val="single" id="image-status">\n <input class="custom-file-input form-control d-none inputFieldDesign" id="validatedCustomFile${uniqueNumber}" maxlength="50" value="">\n <label class="custom-file-label overflow_hidden position-relative d-flex align-items-center" for="validatedCustomFile${uniqueNumber}">Upload image</label>\n </div>\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Title")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" value="" name="iconbox[${index}][title]">\n </div>\n </div>\n </div>\n <div class="col-md-6">\n <div class="form-group row">\n <label class="col-sm-12 control-label">${jsLang("Subtitle")}</label>\n <div class="col-sm-12">\n <input type="text" class="form-control inputFieldDesign" value="" name="iconbox[${index}][subtitle]">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>`};var uniqueNumber=11111111;$(document).on("click",".add-row-btn",(function(e){if($(this).hasClass("__private"))return;e.stopPropagation();let index=parseInt($(this).data("index")),parentId=$(this).data("parent");0==$(this).closest(".accordion-action-group").find(".remove-row-btn").length&&$(removeRowButton(index,parentId)).insertAfter($(this)),uniqueNumber++,$(this).closest(".cta-accordion").length>0?$(this).closest(".cta-accordion").append(getCtaForm(index,parentId)):$(this).closest(".slider-accordion").length>0?$(this).closest(".slider-accordion").append(getSliderForm(index,parentId)):$(this).closest(".iconbox-accordion").length>0&&$(this).closest(".iconbox-accordion").append(getIconboxForm(index,parentId)),$(this).remove()})),$(document).on("click",".remove-row-btn",(function(){if($(this).hasClass("__private"))return;if($(this).closest(".accordion-action-group").find(".add-row-btn").length>0){let index=parseInt($(this).data("index")),parentId=$(this).data("parent"),previousCardActionGroup;$(this).closest(".cta-card").prev().find(".accordion-action-group").append(addRowButton(index,parentId))}let accordions=$(this).closest(".accordion").children();$(this).closest(".cta-card").remove(),2===accordions.length&&accordions.find(".remove-row-btn").remove()}));const getRandomString=(_prefix="")=>_prefix+(Math.random()+1).toString(36).substring(7);jQuery.extend({makeAjaxCall:function(form,_url,_options={},_data={}){let{defaults:defaults,data:data}={defaults:{type:"get",dataType:"json",processData:!1,contentType:"json",success:defaultResponseHandler,failed:defaultResponseHandler,callbackParam:!1,formdata:!1},data:{_token:token,data:form.find("input,select,textarea").serialize()}};defaults.callbackParam={form:form},$("input,textarea,select").prop("disabled",!0),defaults=Object.assign({},defaults,_options),data=defaults.formdata?defaults.formdata:Object.assign({},data,_data),$.ajax({url:_url,type:defaults.type,dataType:defaults.dataType,data:data,success:function(data){defaults.success(defaults.callbackParam,data),ajaxUpdated()},error:function(xhr,status,error){defaults.failed(xhr,status,error),ajaxFailed()},complete:function(jXhr,textStatus){removeButtonLoader()}})}});const defaultResponseHandler=(params,response)=>{unblockEverything()},ajaxUpdated=()=>{triggerNotification(jsLang("Action completed."))},ajaxFailed=()=>{triggerNotification(jsLang("Request failed. Check network tab for details."))},triggerNotification=msg=>{$(".notification-msg-bar").find(".notification-msg").html(msg),$(".notification-msg-bar").removeClass("smoothly-hide"),setTimeout(()=>{$(".notification-msg-bar").addClass("smoothly-hide"),$(".notification-msg-bar").find(".notification-msg").html("")},1500)};$(document).on("click",".has-spinner-loader",(function(){$(this).append('<div class="spinner-border spinner-border-sm ml-2" role="status"><span class="sr-only">Loading...</span></div>'),$(this).addClass("disabled-btn")}));const removeButtonLoader=()=>{$(".has-spinner-loader").removeClass("disabled-btn"),$(".spinner-border").remove(),$("input,textarea,select").prop("disabled",!1)};$(document).on("change",".product-type",(function(){"queryProducts"==$(this).val()?$(this).closest(".component_form").find(".queryOptions").addClass("d-flex").removeClass("d-none"):$(this).closest(".component_form").find(".queryOptions").addClass("d-none").removeClass("d-flex")})),$(document).on("change",".product-col, .product-row",(function(){let row=$(this).closest(".product-count").find(".product-row").val(),col=$(this).closest(".product-count").find(".product-col").val();row&&row>12?row=12:row&&row<=0&&(row=1),col&&col>12?col=12:col&&col<=0&&(col=1),$(this).closest(".product-count").find(".product-row").prop("value",row),$(this).closest(".product-count").find(".product-col").prop("value",col);let total=row*col;"flash_sale"==$(this).closest(".component_form").find(".sidebar_options").val()&&total++,$(this).closest(".product-count").find(".product-quantity").prop("value",total)}));
[-] slider.js
[edit]
[+]
..
[-] page.js
[edit]
[-] query.min.js
[edit]
[-] app.min.js
[edit]
[-] app.js
[edit]
[-] slider.min.js
[edit]
[-] jquery-ui.js
[edit]
[-] user-custom.js
[edit]
[-] page.min.js
[edit]
[-] builder.min.js
[edit]
[-] query.js
[edit]
[-] builder.js
[edit]
[-] jquery-ui.min.js
[edit]
[-] theme.min.js
[edit]
[-] theme.js
[edit]