@cbpds/web-components
Version:
Web components for the CBP Design System.
5 lines • 1.77 kB
JavaScript
/*!
* CPB Design System web components - built with Stencil
*/
import{r as t,c as s,h as i,a as e,g as h}from"./p-436f46fe.js";const o=class{constructor(i){t(this,i);this.suppressedSubmit=s(this,"suppressedSubmit",7);this.enhancedFileInputs=[];this.files={};this.preventSubmit=undefined}handleReset(){const t=this.form.querySelectorAll("cbp-dropdown,cbp-slider,cbp-segmented-button-group,cbp-checkbox,cbp-radio,cbp-toggle,cbp-file-input");t.forEach((t=>{t.reset()}));Object.keys(this.files).forEach((t=>{this.files[t]=[]}))}handleSubmit(t){const s=t.srcElement;let i=new FormData(s);t.preventDefault();i=this.addFiles(i);console.log("cbp-form - Resulting formData (array spread): ",[...i]);if(this.preventSubmit){this.suppressedSubmit.emit({host:this.host,form:s,formData:i,nativeEvent:t})}else s.submit()}addFiles(t){Object.keys(this.files).forEach((s=>{var i,e,h;if(((e=(i=this.files)===null||i===void 0?void 0:i[s])===null||e===void 0?void 0:e.length)>0){t.delete(s);(h=this.files)===null||h===void 0?void 0:h[s].forEach((i=>{t.append(s,i)}))}t[s]=this.files[s]}));return t}handleEnhancedFileInput(t){const{name:s,value:i}=t.detail;if(!!s)this.files[s]=i}componentWillLoad(){this.form=this.host.querySelector("form");this.form.addEventListener("submit",(t=>this.handleSubmit(t)));this.form.addEventListener("reset",(()=>this.handleReset()));this.enhancedFileInputs=Array.from(this.host.querySelectorAll("cbp-file-input[multiple]"));this.enhancedFileInputs.forEach((t=>{t.addEventListener("valueChange",(t=>this.handleEnhancedFileInput(t)))}))}render(){return i(e,{key:"6b59b5c464f29f67bc5d42ac4a99f677c2794066"},i("slot",{key:"08b872acb835a10399316a9c3f6f8e7637b0cb18"}))}get host(){return h(this)}};export{o as cbp_form};
//# sourceMappingURL=p-5ac81da1.entry.js.map