"use strict";(self.heliuxModules=self.heliuxModules||[]).push([[8054],{46367:(i,s,e)=>{var t=e(58480);const n={selectors:{button:".calltoaction__link",loadingSpinner:"heliux-spinner"},subscribes:{getFormId:"form:assign:child",valid:i=>`form:${i}:valid`,invalid:i=>`form:${i}:invalid`,submitFailed:i=>`form:${i}:submit:failed`},publishes:{submit:i=>`form:${i}:submit`,showSpinner:i=>`spinner:${i}:show`,hideSpinner:i=>`spinner:${i}:hide`},modifiers:{disabled:"disabled",hidden:"hidden"}};class d extends t.ComponentBase{init(){this.config={...n,...this.config},this.getElements(),this.isDisabled=!1,this.findParentForm(),this.listeners()}listeners(){this.el.addEventListener("click",(i=>this.checkSubmit(i)))}findParentForm(){const i=this.el.closest("form");i?.classList.contains("formcontainer__form--initialised")&&i.id?this.assignForm({formId:i.id,inputId:this.el.id}):(this.assignFormBinded=this.assignForm.bind(this),(0,t.subscribe)(this.config.subscribes.getFormId,this.assignFormBinded))}assignForm(i){const{formId:s,inputId:e}=i;if(this.el.id===e){this.formId=s;const{subscribes:i}=this.config;(0,t.subscribe)(i.invalid(this.formId),(()=>this.disable())),(0,t.subscribe)(i.valid(this.formId),(()=>this.enable())),(0,t.subscribe)(i.submitFailed(this.formId),(()=>this.enable()))}}disable(){const{modifiers:i,publishes:s}=this.config;this.isDisabled=!0,this.button.setAttribute("disabled",!0),this.loadingSpinner&&(0,t.publish)(s.hideSpinner(this.loadingSpinner.id)),this.button.classList.add(i.disabled)}enable(){const{modifiers:i,publishes:s}=this.config;this.button.removeAttribute("disabled"),this.isDisabled=!1,this.loadingSpinner&&(0,t.publish)(s.hideSpinner(this.loadingSpinner.id)),this.button.classList.remove(i.disabled)}loading(){const{publishes:i}=this.config;this.loadingSpinner&&(0,t.publish)(i.showSpinner(this.loadingSpinner.id))}checkSubmit(i){i.preventDefault(i),!this.isDisabled&&this.formId&&(this.disable(),this.loading(),(0,t.publish)(this.config.publishes.submit(this.formId),this.formId))}disconnectedCallback(){(0,t.unsubscribe)(this.config.subscribes.getFormId,this.assignFormBinded)}}(0,t.register)({FormButton:d},0)}},i=>{i.O(0,[750],(()=>i(i.s=46367))),i.O()}]);