import{r as t,h as s,H as i,g as e}from"./p-d2af20eb.js";import{a as n}from"./p-25a090c9.js";import{s as h}from"./p-d65a44ad.js";import{w as l}from"./p-1d921be2.js";import{d as o}from"./p-19cdcd72.js";import"./p-b70d1ec1.js";const r=({number:t,name:s,eCatalogAvailable:i,location:e,isFav:n,toggleFavUrl:h,inputName:l})=>`\n
\n ${i?``:``} | \n | \n ${s} | \n ${t} | \n ${e} | \n
\n `;let a=class{constructor(s){t(this,s),this.url="",this.preselectedMachines="",this.filterSelector="",this.tableSelector="",this.formSelector="",this.scrollSensorSelector="",this.inputName="machine",this.submitButtonDisabled=!1,this.form=null,this.filter=null,this.filterForm=null,this.table=null,this.tableBody=null,this.nextPage="",this.scrollSensor=null,this.onTableBodyChange=()=>{const t=Array.from(this.form.querySelectorAll("input")).map((t=>t.value));this.tableBody.querySelectorAll("tr").forEach((s=>{const i=s.querySelector("ux-checkbox");t.includes(i.value)&&(i.checked=!0)}))},this.contentObserver=new MutationObserver(o((()=>this.onTableBodyChange()),100)),this.addHiddenInputToForm=t=>{if(null===this.form)return;if(null!==this.form.querySelector(`input[value="${t}"]`))return;const s=document.createElement("input");s.setAttribute("type","hidden"),s.setAttribute("name",this.inputName),s.setAttribute("value",t),this.form.appendChild(s)},this.removeHiddenInputFromForm=t=>{null!==this.form&&this.form.querySelector(`input[value="${t}"]`).remove()}}componentDidLoad(){this.setForm(),this.setFilter(),this.setTable(),this.setScrollSensor(),this.checkFormEmptyState(),this.requestData(this.url),this.contentObserver.observe(this.tableBody,{childList:!0})}checkFormEmptyState(){this.submitButtonDisabled=!this.form.querySelector("input")}handleSubmitButtonState(){!0===this.submitButtonDisabled?this.element.closest("ux-modal").querySelectorAll('button[type="submit"]').forEach((t=>t.classList.add("ux-button--disabled"))):this.element.closest("ux-modal").querySelectorAll('button[type="submit"]').forEach((t=>t.classList.remove("ux-button--disabled")))}setFormElements(t){!0===t.detail.checked&&t.detail.inputName===this.inputName?this.addHiddenInputToForm(t.detail.value):!1===t.detail.checked&&this.removeHiddenInputFromForm(t.detail.value),this.checkFormEmptyState()}setForm(){""!==this.formSelector&&(this.form=this.element.parentElement.querySelector(this.formSelector))}setFilter(){""!==this.filterSelector&&(this.filter=this.element.querySelector(this.filterSelector),l(this.filter,(()=>this.setFilterForm())),this.filter.addEventListener("uxFilterChange",(()=>this.requestData(this.url))))}setFilterForm(){var t;this.filterForm=this.filter.querySelector("form"),null===(t=this.filterForm)||void 0===t||t.addEventListener("submit",(t=>t.preventDefault()))}setTable(){var t;""!==this.tableSelector&&(this.table=this.element.querySelector(this.tableSelector),this.tableBody=null===(t=this.table)||void 0===t?void 0:t.querySelector("tbody"))}setScrollSensor(){""!==this.scrollSensorSelector&&(this.scrollSensor=this.element.querySelector(this.scrollSensorSelector),null!==this.scrollSensor&&this.scrollSensor.addEventListener("uxInfiniteScrollSensorScrolledIntoView",(()=>{this.requestData(this.nextPage)})))}initialRequest(){this.requestData(this.url)}async requestData(t){if(""===t)return;const s=u(t)?{}:{method:"POST",body:h(this.filterForm),headers:{"Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"}};this.showLoadingSpinner(),""!=this.preselectedMachines&&(t=t.includes("?")?`${t}&preselectedMachines=${this.preselectedMachines}`:`${t}?preselectedMachines=${this.preselectedMachines}`);try{const i=await n(t,s);u(t)&&await new Promise((t=>setTimeout(t,1e3))),this.url===t&&this.clearExistingData(),i&&(i.items.length>0&&this.appendItemsToTable(i.items),this.nextPage=i.nextPage||"",""!==this.nextPage&&null!==this.scrollSensor&&(this.scrollSensor.hasFired=!1))}catch(t){console.log(t)}this.hideLoadingSpinner()}showLoadingSpinner(){const t=document.createElement("ux-spinner-overlay");this.element.parentElement.append(t),t.opened=!0}hideLoadingSpinner(){const t=this.element.parentElement.querySelector("ux-spinner-overlay");t&&t.remove()}clearExistingData(){null!==this.tableBody&&(this.tableBody.textContent="")}appendItemsToTable(t){if(null===this.tableBody)return;const s=t.map((t=>Object.assign(Object.assign({},t),{inputName:this.inputName})));this.tableBody.insertAdjacentHTML("beforeend",s.map(r).join(""))}render(){return s(i,null,s("slot",null))}get element(){return e(this)}static get watchers(){return{submitButtonDisabled:["handleSubmitButtonState"],formSelector:["setForm"],filterSelector:["setFilter"],tableSelector:["setTable"],scrollSensorSelector:["setScrollSensor"],url:["initialRequest"]}}};function u(t){return t.indexOf("mock-data/")>-1}export{a as ux_iws_data_controller_request_e_catalog}