PluginProbe
Booking Calendar / 11.5
Booking Calendar v11.5
11.8.4 11.8.3 11.8.2 11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 10.11 All 204 releases
booking / includes / page-form-builder / admin-page-tpl / _src / modal_item_delete.js

modal_item_delete.js in Booking Calendar 11.5, at includes/page-form-builder/admin-page-tpl/_src/modal_item_delete.js

88 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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