let inpostPlGeowidgetModalBlock; function inpost_pl_validate_parcel_machine_for_gpay_block() { let selected_shipping_radio = document.querySelector( '#shipping-option .wc-block-components-radio-control__input:checked' ); if (selected_shipping_radio !== undefined && selected_shipping_radio !== null) { let id = selected_shipping_radio.value; console.log( 'Shipping method ID:', id ); if ( id.indexOf( 'easypack_parcel_machines' ) !== -1 ) { let hidden_input = document.getElementById( 'inpost-parcel-locker-id' ); if ( hidden_input !== undefined && hidden_input !== null ) { let paczkomat_id = hidden_input.value; console.log( 'Paczkomat ID:', paczkomat_id ); if (paczkomat_id.trim() === '') { return false; } } } } return true; } function inpost_pl_get_shipping_method_block() { let data = {}; let shipping_block_html = jQuery( '.wc-block-components-shipping-rates-control' ); if (typeof shipping_block_html != 'undefined' && shipping_block_html !== null) { let shipping_radio_buttons = jQuery( shipping_block_html ).find( 'input[name^="radio-control-"]' ); if ( shipping_radio_buttons.length > 0 ) { let method = jQuery( 'input[name^="radio-control-"]:checked' ).val(); let ship_method_instance_id = ''; if ('undefined' == typeof method || null === method) { method = jQuery( 'input[name^="radio-control-"]' ).val(); } if (typeof method != 'undefined' && method !== null) { if (method.indexOf( ':' ) > -1) { let arr = method.split( ':' ); method = arr[0]; ship_method_instance_id = arr[1]; } } data.method = method; data.instance_id = ship_method_instance_id; } } return data; } function inpost_pl_change_react_input_value(input,value) { if (typeof input != 'undefined' && input !== null) { var nativeInputValueSetter = Object.getOwnPropertyDescriptor( window.HTMLInputElement.prototype, "value" ).set; nativeInputValueSetter.call( input, value ); var inputEvent = new Event( "input", {bubbles: true} ); input.dispatchEvent( inputEvent ); } } function inpost_pl_select_point_callback_blocks(point) { let selected_point_data = ''; let parcelMachineAddressDesc; let address_line1 = ''; let address_line2 = ''; let point_name = ''; if (point) { jQuery( '#easypack_selected_point_data' ).each( function (ind, elem) { jQuery( elem ).remove(); } ); if ( 'name' in point ) { point_name = point.name; if (point_name.startsWith( "PL_" )) { // Remove first 3 characters "PL_". point_name = point_name.slice( 3 ); } } inpost_pl_change_react_input_value( document.getElementById( 'inpost-parcel-locker-id' ), point_name ); if ( typeof point.location_description != 'undefined' && point.location_description !== null ) { parcelMachineAddressDesc = point.location_description; } if ( typeof point.address.line2 != 'undefined' && point.address.line2 !== null ) { address_line2 = point.address.line2; } if ( typeof point.address.line1 != 'undefined' && point.address.line1 !== null ) { address_line1 = point.address.line1; } if (point.location_description) { selected_point_data = '
\n' + '
' + point_name + '
\n' + '' + address_line1 + '
' + address_line2 + '

' + '(' + point.location_description + ')
'; } else { selected_point_data = '
\n' + '
' + point_name + '
\n' + '' + address_line1 + '
' + address_line2 + '
'; } jQuery( '#inpost_pl_selected_point_data_wrap' ).html( selected_point_data ); jQuery( '#inpost_pl_selected_point_data_wrap' ).show(); jQuery( "#easypack_block_type_geowidget" ).text( easypack_block.button_text2 ); let data = { action: 'inpost_save_to_wc_session', security: easypack_block.security, key: 'inpost_pl_wc_paczkomat', value: point_name }; // console.log(data); jQuery.ajax( { type: 'POST', url: easypack_block.ajaxurl, data: data, dataType: 'json', success: function (response) { //console.log( 'Paczkomat saved in session data:', response ); }, error: function (jqXHR, textStatus, errorThrown) { console.log( "Error response saving paczkomato into session" ); console.log( textStatus ); console.log( 'Error: ' + errorThrown + ' ' + jqXHR.responseText ); } } ); } inpostPlGeowidgetModalBlock.close(); } function inpost_pl_create_validation_modal() { // Create main modal container. const modal = document.createElement( 'div' ); modal.id = 'inpost_pl_checkout_validation_modal'; Object.assign( modal.style, { display: 'none', position: 'fixed', top: '0', left: '0', width: '100%', height: '100%', backgroundColor: 'rgba(0, 0, 0, 0.5)', justifyContent: 'center', alignItems: 'center', zIndex: '1000' } ); // Create modal content container. const modalContent = document.createElement( 'div' ); Object.assign( modalContent.style, { backgroundColor: 'white', width: '90%', maxWidth: '300px', padding: '20px', position: 'relative', textAlign: 'center', borderRadius: '10px', boxShadow: '0px 4px 10px rgba(0, 0, 0, 0.1)' } ); // Create close button (×). const closeSpan = document.createElement( 'span' ); closeSpan.id = 'inp_pl_close_modal_cross'; closeSpan.textContent = '×'; Object.assign( closeSpan.style, { position: 'absolute', top: '10px', right: '15px', fontSize: '20px', cursor: 'pointer' } ); // Create message div. const messageDiv = document.createElement( 'div' ); messageDiv.textContent = 'Musisz wybrać paczkomat.'; Object.assign( messageDiv.style, { margin: '20px 0', fontSize: '18px' } ); // Create OK button. const okButton = document.createElement( 'button' ); okButton.id = 'inp_pl_close_modal_button'; okButton.textContent = 'Ok'; Object.assign( okButton.style, { padding: '10px 20px', backgroundColor: '#FFA900', color: 'white', border: 'none', borderRadius: '5px', cursor: 'pointer', fontSize: '16px' } ); // Assemble the modal. modalContent.appendChild( closeSpan ); modalContent.appendChild( messageDiv ); modalContent.appendChild( okButton ); modal.appendChild( modalContent ); return modal; } jQuery( document ).ready( function () { let inpost_methods = inpost_pl_get_configured_inpost_methods(); //console.log( inpost_methods ); let validation_modal = inpost_pl_create_validation_modal(); // Append modal to body. document.body.appendChild( validation_modal ); // Event Listeners for closing modal. let modal_close_1 = document.getElementById( 'inp_pl_close_modal_cross' ); if (typeof modal_close_1 != 'undefined' && modal_close_1 !== null) { modal_close_1.addEventListener( 'click', inpost_pl_close_validation_modal ); } let modal_close_2 = document.getElementById( 'inp_pl_close_modal_button' ); if (typeof modal_close_2 != 'undefined' && modal_close_2 !== null) { modal_close_2.addEventListener( 'click', inpost_pl_close_validation_modal ); } setTimeout( function () { let token = easypack_block.geowidget_v5_token; let shipping_data = inpost_pl_get_shipping_method_block(); let config = 'parcelCollect'; let method = shipping_data.method; let instance_id = shipping_data.instance_id; config = inpost_pl_get_map_config_based_on_instance_id( instance_id, method ); let wH = jQuery( window ).height() - 80; inpostPlGeowidgetModalBlock = new jBox( 'Modal', { width: 800, height: wH, attach: '#eqasypack_show_geowidget', title: 'Wybierz paczkomat', content: '' } ); jQuery( "#easypack_block_type_geowidget" ).on( 'click', function (e) { e.preventDefault(); //console.log( 'inpost-pl: click on map button jQuery' ); if ( typeof inpostPlGeowidgetModalBlock != 'undefined' && inpostPlGeowidgetModalBlock !== null ) { let checked_radio_control = jQuery( 'input[name^="radio-control-"]:checked' ); if ( typeof checked_radio_control != 'undefined' && checked_radio_control !== null) { let id = jQuery( checked_radio_control ).attr( 'id' ); let instance_id = null; let method_id = null; let method_data = null; if (typeof id != 'undefined' && id !== null) { method_data = id.split( ":" ); instance_id = method_data[method_data.length - 1]; method_id = method_data[0]; if (typeof method_id != 'undefined' && method_id !== null) { let token = easypack_block.geowidget_v5_token; let config = 'parcelCollect'; config = inpost_pl_get_map_config_based_on_instance_id( instance_id, method_id ); let map_content = ''; inpostPlGeowidgetModalBlock.setContent( map_content ); } } } if ( ! inpostPlGeowidgetModalBlock.isOpen ) { inpostPlGeowidgetModalBlock.open(); } } } ); jQuery( 'input[name^="radio-control-"]' ).on( 'change', function () { if (this.checked) { const parent = document.getElementById( "shipping-option" ); if ( parent && parent.contains( this ) ) { jQuery( '#inpost_pl_selected_point_data_wrap' ).hide(); inpost_pl_change_react_input_value( document.getElementById( 'inpost-parcel-locker-id' ), '' ); let config = 'parcelCollect'; let shipping_method_data = jQuery( this ).attr( 'id' ); if (typeof shipping_method_data != 'undefined' && shipping_method_data !== null) { let method_data = shipping_method_data.split( ":" ); let instance_id = method_data[method_data.length - 1]; let method_id = method_data[0]; config = inpost_pl_get_map_config_based_on_instance_id( instance_id, method_id ); } let map_content = ''; inpostPlGeowidgetModalBlock.setContent( map_content ); } } } ); }, 1200 ); } ); document.addEventListener( 'click', function (e) { e = e || window.event; var target = e.target || e.srcElement; if ( target.hasAttribute( 'id' ) ) { if (target.getAttribute( 'id' ) === 'easypack_block_type_geowidget' ) { e.preventDefault(); if ( typeof inpostPlGeowidgetModalBlock != 'undefined' && inpostPlGeowidgetModalBlock !== null ) { let checked_radio_control = jQuery( 'input[name^="radio-control-"]:checked' ); if ( typeof checked_radio_control != 'undefined' && checked_radio_control !== null) { let id = jQuery( checked_radio_control ).attr( 'id' ); let instance_id = null; let method_id = null; let method_data = null; if (typeof id != 'undefined' && id !== null) { method_data = id.split( ":" ); instance_id = method_data[method_data.length - 1]; method_id = method_data[0]; if (typeof method_id != 'undefined' && method_id !== null) { let token = easypack_block.geowidget_v5_token; let config = 'parcelCollect'; config = inpost_pl_get_map_config_based_on_instance_id( instance_id, method_id ); let map_content = ''; inpostPlGeowidgetModalBlock.setContent( map_content ); } } } if ( ! inpostPlGeowidgetModalBlock.isOpen ) { inpostPlGeowidgetModalBlock.open(); } } } } if ( target.closest( '.wc-block-components-checkout-place-order-button' ) || target.classList.contains( 'wc-block-components-checkout-place-order-button' ) || target.classList.contains( 'wc-block-checkout__actions_row' ) ) { let reactjs_input = document.getElementById( 'inpost-parcel-locker-id' ); let reactjs_input_lalue = false; if (typeof reactjs_input != 'undefined' && reactjs_input !== null) { reactjs_input_lalue = reactjs_input.value; if ( ! reactjs_input_lalue ) { inpost_pl_open_validation_modal(); } } } } ); function inpost_pl_open_validation_modal() { document.getElementById( 'inpost_pl_checkout_validation_modal' ).style.display = 'flex'; } function inpost_pl_close_validation_modal() { document.getElementById( 'inpost_pl_checkout_validation_modal' ).style.display = 'none'; // Scroll to map button. let scrollToElement = document.getElementById( 'easypack_block_type_geowidget' ); if (scrollToElement) { scrollToElement.scrollIntoView( {behavior: 'smooth' } ); } } function inpost_pl_get_map_config_based_on_instance_id(instance_id, method) { let map_config = 'parcelCollect'; let inpost_methods = inpost_pl_get_configured_inpost_methods(); if (instance_id !== undefined && instance_id !== null && instance_id !== '') { let selected_method = inpost_methods[instance_id]; if (typeof selected_method != 'undefined' && selected_method !== null) { let method_id = selected_method.inpost_title; if (method_id === 'easypack_parcel_machines_cod') { map_config = 'parcelCollectPayment'; } if (method_id === 'easypack_shipping_courier_c2c') { map_config = 'parcelSend'; } if ( method_id === 'easypack_parcel_machines_weekend' || method_id === 'easypack_parcel_machines_weekend_cod' ) { map_config = 'parcelCollect247'; } } } else { if (method === 'easypack_parcel_machines_cod') { map_config = 'parcelCollectPayment'; } if (method === 'easypack_shipping_courier_c2c') { map_config = 'parcelSend'; } if (method === 'easypack_parcel_machines_weekend' || method === 'easypack_parcel_machines_weekend_cod') { map_config = 'parcelCollect247'; } } return map_config; } function inpost_pl_get_configured_inpost_methods() { if (typeof wcSettings != 'undefined' && wcSettings !== null) { if (wcSettings.inpost_pl_block_data && wcSettings.inpost_pl_block_data.configured_methods) { return wcSettings.inpost_pl_block_data.configured_methods; } } return []; } window.addEventListener( 'message', function (event) { let parsedData; try { if (typeof event.data === 'string') { parsedData = JSON.parse( event.data ); } else { parsedData = event.data; } // Now check for Google Pay click. if ( parsedData.type === "parent" && parsedData.message && parsedData.message.action === "stripe-frame-event" && parsedData.message.payload && parsedData.message.payload.event === "click" && parsedData.message.payload.data ) { if ( "google_pay" === parsedData.message.payload.data.paymentMethodType || "apple_pay" === parsedData.message.payload.data.paymentMethodType || "apple_pay_inner" === parsedData.message.payload.data.paymentMethodType ) { // console.log('Google Pay button or ApplePay button click detected'); if ( ! inpost_pl_validate_parcel_machine_for_gpay_block() ) { // console.log('Parcel machine validation failed'); alert( 'Wygląda na to, że zapomniałeś wybrać paczkomat.' + "\n\n" + ' Jeśli tak, zamknij okno modalne, wybierz punkt za pomocą przycisku "Wybierz punkt odbioru", a następnie wróć do płatności.' ); return false; } } } } catch (err) { // console.log('Error processing message:', err); } } );