class ultraSearchWidgetClass extends elementorModules.frontend.handlers.Base {
getDefaultSettings(){
return {
selectors:{
geoLocationAddress:'#geolocation-address-' + this.getID(),
locationFieldWrap:'#location-fields-wrap-' + this.getID(),
geoRadiusSlider:'#geolocation-radius-slider-wrapper-' + this.getID()
}};}
getDefaultElements(){
const selectors=this.getSettings('selectors');
return {
$geoLocationAddress:this.$element.find(selectors.geoLocationAddress),
$locationFieldWrap:this.$element.find(selectors.locationFieldWrap),
$geoRadiusSlider:this.$element.find(selectors.geoRadiusSlider)
};}
bindEvents(){
this.loadUltraSearchWidget();
}
loadUltraSearchWidget(event){
const widgetID=this.getID(),
widgetSettings=this.getElementSettings(),
widgetWrapID='#rhea-' + widgetID,
locationFieldsID=this.elements.$locationFieldWrap,
geoLocationAddress=jQuery(this.elements.$geoLocationAddress),
locationFieldsWrap=jQuery(locationFieldsID),
geolocationRadiusWrapper=this.elements.$geoRadiusSlider,
TriggerCalender=jQuery(widgetWrapID + ' .rhea-trigger-calender'),
searchSingleCheckIn=jQuery(widgetWrapID + ' .rhea-single-check-in-search'),
searchCheckIn=jQuery(widgetWrapID + ' .rhea-check-in-search'),
searchCheckOut=jQuery(widgetWrapID + ' .rhea-check-out-search');
if(0 < TriggerCalender.length){
searchCheckOut.on('click', function (){
TriggerCalender.trigger('click');
});
let localeOptions={
firstDay:1
};
if('undefined'!==typeof(availability_calendar_data) ){
localeOptions.daysOfWeek=availability_calendar_data.day_name;
localeOptions.monthNames=availability_calendar_data.month_name;
}
let searchPickerOptions={
autoApply:true,
drops:'down',
opens:'right',
autoUpdateInput:false,
minDate:new Date(),
parentEl:'#rhea-' + widgetID,
locale:{
...localeOptions
}};
if(searchCheckIn.val()&&searchCheckOut.val()){
searchPickerOptions.startDate=searchCheckIn.val();
searchPickerOptions.endDate=searchCheckOut.val();
}
TriggerCalender.daterangepicker(searchPickerOptions, function(startDate, endDate, label){
searchCheckIn.parents('.rh_mod_text_field').addClass('rh_mod_text_field_focused');
searchCheckOut.parents('.rh_mod_text_field').addClass('rh_mod_text_field_focused');
searchCheckIn.val(startDate.format('YYYY-MM-DD') );
searchCheckOut.val(endDate.format('YYYY-MM-DD') );
searchSingleCheckIn.val(startDate.format('YYYY-MM-DD') + '  /  ' + endDate.format('YYYY-MM-DD') );
});
}
if(typeof google!==undefined){
let geoLocationWrap=geoLocationAddress.get(0);
if(geoLocationWrap){
function initAutocomplete(){
let autocomplete=new google.maps.places.Autocomplete(geoLocationWrap);
autocomplete.setFields(['address_components', 'geometry', 'icon', 'name']);
autocomplete.addListener('place_changed', function (){
const place=autocomplete.getPlace();
locationFieldsWrap.find('.location-field-lat').val(place.geometry.location.lat());
locationFieldsWrap.find('.location-field-lng').val(place.geometry.location.lng());
});
}
initAutocomplete();
}}
if(geolocationRadiusWrapper.length){
const geolocationRadiusSlider=geolocationRadiusWrapper.find('#geolocation-radius-slider-' + this.getID());
const geolocationRadiusWrapperSelector=geolocationRadiusWrapper.find('#rh-geolocation-radius-' + this.getID());
geolocationRadiusSlider.slider({
range:'max',
value:geolocationRadiusSlider.data('value'),
min:geolocationRadiusSlider.data('min-value'),
max:geolocationRadiusSlider.data('max-value'),
slide:function(event, ui){
geolocationRadiusWrapper.find('strong')
.text(ui.value + ' ' + geolocationRadiusSlider.data('unit') );
geolocationRadiusWrapperSelector.val(ui.value);
}});
}}
}
jQuery(window).on('elementor/frontend/init', ()=> {
const ultraSearchWidgetHandler=($element)=> {
elementorFrontend.elementsHandler.addHandler(ultraSearchWidgetClass, {
$element
});
};
elementorFrontend.hooks.addAction('frontend/element_ready/rhea-search-form-widget.default', ultraSearchWidgetHandler);
elementorFrontend.hooks.addAction('frontend/element_ready/rhea-ultra-search-form-widget.default', ultraSearchWidgetHandler);
elementorFrontend.hooks.addAction('frontend/element_ready/rhea-ultra-search-form-2-widget.default', ultraSearchWidgetHandler);
});