| 1 |
/** |
| 2 |
* Booking Calendar — Confirm Delete modal helper (BFB Admin) |
| 3 |
* |
| 4 |
* UI.Modal_Confirm_Delete.open(label, on_confirm) |
| 5 |
* |
| 6 |
* Depends on: |
| 7 |
* - UI.Templates.ensure_dom_ref_from_wp_template |
| 8 |
* - UI.Modals.show/hide |
| 9 |
* @file: ../includes/page-form-builder/admin-page-tpl/_out/modal_item_delete.js |
| 10 |
*/ |
| 11 |
|
| 12 |
(function (w, d) { |
| 13 |
'use strict'; |
| 14 |
|
| 15 |
const Core = (w.WPBC_BFB_Core = w.WPBC_BFB_Core || {}); |
| 16 |
const UI = (Core.UI = Core.UI || {}); |
| 17 |
|
| 18 |
UI.Modal_Confirm_Delete = UI.Modal_Confirm_Delete || {}; |
| 19 |
|
| 20 |
// Idempotency guard. |
| 21 |
if ( UI.Modal_Confirm_Delete.__bound ) { |
| 22 |
return; |
| 23 |
} |
| 24 |
UI.Modal_Confirm_Delete.__bound = true; |
| 25 |
|
| 26 |
const MODAL_DOM_ID = 'wpbc_bfb_modal__confirm_delete'; |
| 27 |
const TPL_MODAL_ID = 'wpbc-bfb-tpl-modal-confirm-delete'; |
| 28 |
|
| 29 |
const SEL_CONFIRM = '#' + MODAL_DOM_ID + ' [data-wpbc-bfb-confirm="1"]'; |
| 30 |
const SEL_CANCEL = '#' + MODAL_DOM_ID + ' [data-wpbc-bfb-cancel="1"]'; |
| 31 |
|
| 32 |
UI.Modal_Confirm_Delete.open = function (label, on_confirm) { |
| 33 |
|
| 34 |
const ref = UI.Templates.ensure_dom_ref_from_wp_template( TPL_MODAL_ID, MODAL_DOM_ID ); |
| 35 |
if ( !ref || !ref.el ) { |
| 36 |
return; |
| 37 |
} |
| 38 |
|
| 39 |
const modal_el = ref.el; |
| 40 |
|
| 41 |
// Insert label into translated message placeholder. |
| 42 |
const label_el = modal_el.querySelector ? modal_el.querySelector( '.wpbc_bfb__confirm_label' ) : null; |
| 43 |
if ( label_el ) { |
| 44 |
label_el.textContent = String( label || '' ); |
| 45 |
} |
| 46 |
|
| 47 |
// Store callback on modal instance (single modal, single active confirm). |
| 48 |
modal_el.__wpbc_bfb_confirm_delete_cb = (typeof on_confirm === 'function') ? on_confirm : null; |
| 49 |
|
| 50 |
UI.Modals.show( ref.id ); |
| 51 |
}; |
| 52 |
|
| 53 |
d.addEventListener( 'click', function (e) { |
| 54 |
|
| 55 |
const modal_el = d.getElementById( MODAL_DOM_ID ); |
| 56 |
if ( !modal_el || !e.target || !e.target.closest ) { |
| 57 |
return; |
| 58 |
} |
| 59 |
|
| 60 |
const is_confirm = e.target.closest( SEL_CONFIRM ); |
| 61 |
if ( is_confirm ) { |
| 62 |
e.preventDefault(); |
| 63 |
|
| 64 |
const cb = modal_el.__wpbc_bfb_confirm_delete_cb || null; |
| 65 |
modal_el.__wpbc_bfb_confirm_delete_cb = null; |
| 66 |
|
| 67 |
UI.Modals.hide( modal_el ); |
| 68 |
|
| 69 |
if ( cb ) { |
| 70 |
try { |
| 71 |
cb(); |
| 72 |
} catch ( _e ) { |
| 73 |
} |
| 74 |
} |
| 75 |
return; |
| 76 |
} |
| 77 |
|
| 78 |
const is_cancel = e.target.closest( SEL_CANCEL ); |
| 79 |
if ( is_cancel ) { |
| 80 |
e.preventDefault(); |
| 81 |
modal_el.__wpbc_bfb_confirm_delete_cb = null; |
| 82 |
UI.Modals.hide( modal_el ); |
| 83 |
} |
| 84 |
|
| 85 |
}, true ); |
| 86 |
|
| 87 |
}( window, document )); |
| 88 |
|