1// Wait for Elementor preview to be fully loaded 2jQuery(window).on('elementor/frontend/init', function () { 3 elementorFrontend.hooks.addAction('frontend/element_ready/simplex_booking_engine.default', function ($scope, $) { 4 // Code to execute for the custom widget when Elementor preview is loaded 5 //console.log("Custom Widget Loaded in Elementor Preview"); 6 7 // Get the widget CID dynamically 8 const widgetCID = $scope.data('model-cid'); 9 // Get widget settings 10 const widgetSettings = elementorFrontend.config?.elements?.data[widgetCID]?.attributes || {}; 11 let hotel = widgetSettings.hotel; 12 let lang = null; 13 14 //only on elementor editor preview 15 if (elementorFrontend.isEditMode()) { 16 lang = widgetSettings.language || simplexbe_Helper.getPageLang(); 17 let engineDiv = simplexbe_BookingEngine.getEngineDivOnSite($scope); 18 engineDiv.classList.add('engine-editor-preview'); 19 20 let bookNowBtn = simplexbe_BookingEngine.createBookNowBtn(true); 21 $scope.append(bookNowBtn); 22 } 23 24 simplexbe_BookingEngine.generateEngine({ widgetScope: $scope, engineHotelID: hotel, engineLang: lang }); 25 // simplexbe_BookingEngine.generateCustomStyles(simplexbe_BookingEngine.engineCustomStyleID); 26 }); 27}); 28 29//widget panel opened action 30jQuery(document).ready(function ($) { 31 try { 32 elementor.hooks.addAction('panel/open_editor/widget/simplex_booking_engine', function (panel, model, view) { 33 // Set the 'hotel' setting to a new value (update value show in panel) 34 //model.setSetting('hotel','heb'); 35 36 elementor.channels.editor.on('editor:widget:simplex_booking_engine:hotel_section:activated', function (event) { 37 //element hotel select in hotel control from panel (jquery obj) 38 let selectionHotel = event.$el.find("*[data-setting='hotel']"); 39 const hotels = simplexbe_BookingEngine.getHotelsList(); 40 41 if (hotels.length < 2) { 42 //single hotel, change option to hotel name and disable selection 43 let firstOption = selectionHotel.find('option:first-of-type'); 44 let hostName = hotels[0]?.hotelName ?? ''; 45 firstOption.text(hostName); 46 //selectionHotel.prop('disabled', true); 47 } else { 48 //create hotels options
49 hotels.forEach((hotel) => { 50 const option = document.createElement('option'); 51 option.textContent = hotel.hotelName; 52 option.value = hotel.hotelID; 53 54 if (hotel.isRegion) { 55 option.disabled = true; // Disable regions 56 option.classList.add('simplexbe-option-region'); // Add class 57 } 58 59 if (event.model.getSetting('hotel') == hotel.hotelID) { 60 //value selected 61 option.selected = true; 62 } 63 64 selectionHotel.append(option); 65 }); 66 } 67 }); 68 69 elementor.channels.editor.on('editor:widget:simplex_booking_engine:language_section:activated', function (event) { 70 let selectionLanguage = event.$el.find("*[data-setting='language']"); 71 simplexbe_Helper 72 .getHotelDataFromAPI(simplexbe_BookingEngine.options[simplexbe_BookingEngine.apiKeyField]) 73 .then((hotelData) => { 74 let languages = hotelData.languages; 75
76 languages.forEach((lang) => { 77 const option = document.createElement('option'); 78 option.textContent = simplexbe_Helper.getLanguageName(lang.languageIsoCode); 79 option.value = lang.languageIsoCode; 80 81 if (event.model.getSetting('language') == lang.languageIsoCode) { 82 //value selected 83 option.selected = true; 84 } 85 86 selectionLanguage.append(option); 87 }); 88 }) 89 .catch((error) => { 90 console.log('Error fetching hotel data:', error); 91 }); 92 }); 93 94 /* 95 // Listen for changes in the editor 96 elementor.channels.editor.on('change', function(container) { 97 console.log("Widget settings changed!"); 98 }); 99 */ 100 }); 101 } catch { } 102});
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.