PageSourceSearch

https://www.motorsportitalia.it/wp-content/plugins/woocommerce-mot…/js/wcmsi-bookings37-compat.js?ver=1.5.6

js motorsportitalia.it collected 2026-10-01 14:36:00 UTC 3,923 bytes, 107 lines download raw bytes

1/**
2 * WCMSI - Patch di compatibilità con WooCommerce Bookings 3.7+
3 *
4 * Contesto: con l'aggiornamento di Bookings (3.0.x -> 3.7.x) l'inizializzazione
5 * del form di prenotazione è cambiata:
6 *  1) il contenitore #wc-bookings-booking-form può restare nascosto
7 *     (style="display:none"), impedendo di vedere il calendario;
8 *  2) i pulsanti vengono disabilitati con classe "disabled" + attributo
9 *     aria-disabled="true" + attributo disabled. Il codice custom originale
10 *     rimuove solo la classe, quindi il pulsante "Regala" restava grigio.
11 *
12 * Questa patch, in modo consapevole della scheda attiva (Prenota / Regala):
13 *  - forza la visibilità del form di prenotazione;
14 *  - PRENOTA: mostra il calendario (con fallback ai campi Mese/Giorno/Anno) e
15 *    il relativo pulsante; lascia che sia Bookings ad abilitarlo dopo la scelta
16 *    della data (comportamento corretto);
17 *  - REGALA: nasconde la data e ABILITA davvero il pulsante regalo rimuovendo
18 *    classe "disabled" + aria-disabled + attributo disabled.
19 *
20 * Non modifica i file originali del plugin custom. Aggiunta il 2026-07-04.
21 */
22(function ($) {
23	'use strict';
24
25	function activeTabType() {
26		var $t = $('#wcmsi-tab .wcmsi-tablinks.active');
27		return ($t.length && $t.data('type')) ? $t.data('type') : 'booking';
28	}
29
30	// Abilita completamente un pulsante secondo la logica di Bookings 3.7.
31	function enableButton($btn) {
32		$btn.removeClass('disabled')
33			.removeAttr('aria-disabled')
34			.removeAttr('disabled')
35			.prop('disabled', false);
36	}
37
38	function forceBookingFormVisible() {
39		var $form = $('#wc-bookings-booking-form');
40		if ($form.length && $form.is(':hidden')) {
41			$form.css('display', 'block');
42		}
43	}
44
45	function applyView() {
46		forceBookingFormVisible();
47
48		var $allButtons = $('form.cart .wc-bookings-booking-form-button.single_add_to_cart_button');
49		var $giftButton = $allButtons.filter('.ywgc-add-gift-product-to-cart');
50		var $bookButton = $allButtons.not('.ywgc-add-gift-product-to-cart');
51		var $datePicker = $('#wc-bookings-booking-form .wc-bookings-date-picker');
52
53		if (activeTabType() === 'booking') {
54			// PRENOTA: mostra data + pulsante prenotazione, nasconde pulsante regalo.
55			$datePicker.show();
56
57			// Fallback: se il calendario inline non è stato costruito, mostra i campi data.
58			if ($datePicker.find('.picker').find('.ui-datepicker-calendar, table').length === 0) {
59				$datePicker.find('.wc-bookings-date-picker-date-fields').show();
60			}
61
62			$bookButton.css('display', '');
63			$giftButton.hide();
64			// Nota: NON forziamo l'abilitazione del pulsante Prenota: resta grigio
65			// finché non si sceglie una data (lo abilita Bookings), com'è corretto.
66		} else {
67			// REGALA: data ignorata, pulsante regalo attivo.
68			$datePicker.hide();
69			$('#wc-bookings-booking-form div.form-field-wide').hide();
70			$('#wc-bookings-booking-form div.timezone-details').hide();
71			$('#wc-bookings-booking-form .block-picker').hide();
72
73			$bookButton.hide();
74			if ($giftButton.length) {
75				enableButton($giftButton);
76				$giftButton.css('display', '');
77			} else {
78				// Se il pulsante regalo dedicato non esiste, abilita comunque
79				// il pulsante di acquisto così la scheda Regala è utilizzabile.
80				enableButton($bookButton);
81				$bookButton.css('display', '');
82			}
83		}
84	}
85
86	$(function () {
87		// Bookings inizializza in modo asincrono: riproviamo qualche volta.
88		var runs = 0;
89		var timer = setInterval(function () {
90			applyView();
91			if (++runs >= 10) {
92				clearInterval(timer);
93			}
94		}, 400);
95
96		// Riapplica quando si cambia scheda Prenota/Regala.
97		$(document).on('click', '#wcmsi-tab .wcmsi-tablinks', function () {
98			setTimeout(applyView, 60);
99		});
100
101		// Riapplica dopo eventi tipici di Bookings/gift.
102		$(document).on(
103			'wc_bookings_calculate_costs found_new_bookable updated_wc_div yith_ywgc_after_click_give_as_present',
104			function () { setTimeout(applyView, 60); }
105		);
106	});
107})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.