Files
Atomcms-edit/public/js/filament/actions/actions.js
T

2 lines
1.7 KiB
JavaScript
Executable File

(()=>{var s=({livewireId:i})=>({actionNestingIndex:null,closedActionNestingIndexes:[],init(){window.addEventListener("sync-action-modals",t=>{t.detail.id===i&&this.syncActionModals(t.detail.newActionNestingIndex,t.detail.shouldOverlayParentActions??!1)}),window.addEventListener("modal-closed",t=>{let e=this.getActionNestingIndexFromModalId(t.detail.id);e!==null&&this.closedActionNestingIndexes.push(e)})},syncActionModals(t,e=!1){if(this.actionNestingIndex===t){this.actionNestingIndex!==null&&this.$nextTick(()=>this.openModal());return}let n=this.actionNestingIndex!==null&&t!==null&&t>this.actionNestingIndex;if(this.actionNestingIndex!==null&&!(e&&n)&&this.closeModal(),this.actionNestingIndex=t,this.actionNestingIndex===null){this.closedActionNestingIndexes=[];return}if(this.closedActionNestingIndexes=this.closedActionNestingIndexes.filter(o=>o<=this.actionNestingIndex),!this.closedActionNestingIndexes.includes(this.actionNestingIndex)){if(!this.$el.querySelector(`#${this.generateModalId(t)}`)){this.$nextTick(()=>this.openModal());return}this.openModal()}},generateModalId(t){return`fi-${i}-action-`+t},getActionNestingIndexFromModalId(t){let e=`fi-${i}-action-`;if(!t?.startsWith(e))return null;let n=Number(t.slice(e.length));return Number.isInteger(n)?n:null},openModal(){let t=this.generateModalId(this.actionNestingIndex);document.dispatchEvent(new CustomEvent("open-modal",{bubbles:!0,composed:!0,detail:{id:t}}))},closeModal(){let t=this.generateModalId(this.actionNestingIndex);document.dispatchEvent(new CustomEvent("close-modal-quietly",{bubbles:!0,composed:!0,detail:{id:t}}))}});document.addEventListener("alpine:init",()=>{window.Alpine.data("filamentActionModals",s)});})();