var tribe_dropdowns = window.tribe_dropdowns || {};
( function( $, obj, _ ) {
'use strict';
obj.selector = {
dropdown: '.tribe-dropdown',
created: '.tribe-dropdown-created',
searchField: '.select2-search__field',
};
// Setup a Dependent
$.fn.tribe_dropdowns = function() {
obj.dropdown( this, {} );
return this;
};
obj.freefrom_create_search_choice = function( params ) {
if ( 'string' !== typeof params.term ) {
return null;
}
var term = params.term.trim();
if ( '' === term ) {
return null;
}
var args = this.options.options;
var $select = args.$select;
if (
term.match( args.regexToken )
&& (
! $select.is( '[data-int]' )
|| (
$select.is( '[data-int]' )
&& term.match( /\d+/ )
)
)
) {
var choice = { id: term, text: term, new: true };
if ( $select.is( '[data-create-choice-template]' ) ) {
choice.text = _.template( $select.data( 'createChoiceTemplate' ) )( { term: term } );
}
return choice;
}
return null;
};
/**
* Better Search ID for Select2, compatible with WordPress ID from WP_Query
*
* @param {object|string} e Searched object or the actual ID
* @return {string} ID of the object
*/
obj.search_id = function( e ) {
var id = undefined;
if ( 'undefined' !== typeof e.id ) {
id = e.id;
} else if ( 'undefined' !== typeof e.ID ) {
id = e.ID;
} else if ( 'undefined' !== typeof e.value ) {
id = e.value;
}
return undefined === e ? undefined : id;
};
/**
* Better way of matching results
*
* @param {string} term Which term we are searching for
* @param {string} text Search here
* @return {boolean}
*/
obj.matcher = function( params, data ) {
// If there are no search terms, return all of the data
if ( 'string' !== typeof params.term || params.term.trim() === '') {
return data;
}
// Do not display the item if there is no 'text' property
if ( typeof data.text === 'undefined' ) {
return null;
}
var term = params.term.trim();
var text = data.text;
var $select = $( data.element ).closest( 'select' );
var args = $select.data( 'dropdown' );
var result = text.toUpperCase().indexOf( term.toUpperCase() ) !== -1;
if ( ! result && 'undefined' !== typeof args.tags ){
var possible = _.where( args.tags, { text: text } );
if ( args.tags.length > 0 && _.isObject( possible ) ){
var test_value = obj.search_id( possible[0] );
result = test_value.toUpperCase().indexOf( term.toUpperCase() ) !== -1;
}
}
return result;
};
/**
* If the element used as the basis of a dropdown specifies one or more numeric/text
* identifiers in its val attribute, then use those to preselect the appropriate options.
*
* @param {object} $select
* @param {function} make_selection
*/
obj.init_selection = function( $select, make_selection ) {
var isMultiple = $select.is( '[multiple]' );
var options = $select.data( 'dropdown' );
var currentValues = $select.val().split( options.regexSplit );
var selectedItems = [];
$( currentValues ).each( function( index, value ) { // eslint-disable-line no-unused-vars
var searchFor = { id: this, text: this };
var data = options.ajax ? $select.data( 'options' ) : options.data;
var locatedItem = find_item( searchFor, data );
if ( locatedItem && locatedItem.selected ) {
selectedItems.push( locatedItem );
}
} );
if ( selectedItems.length && isMultiple ) {
make_selection( selectedItems );
} else if ( selectedItems.length ) {
make_selection( selectedItems[ 0 ] );
} else {
make_selection( false );
return;
}
};
/**
* Searches array 'haystack' for objects that match 'description'.
*
* The 'description' object should take the form { id: number, text: string }. The first
* object within the haystack that matches one of those two properties will be returned.
*
* If objects contain an array named 'children', then that array will also be searched.
*
* @param {Object} description
* @param {Array} haystack
*
* @return {Object|boolean}
*/
function find_item( description, haystack ) {
if ( ! _.isArray( haystack ) ) {
return false;
}
for ( var index in haystack ) {
var possible_match = haystack[ index ];
if ( possible_match.hasOwnProperty( 'id' ) && possible_match.id == description.id ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len
return possible_match;
}
if ( possible_match.hasOwnProperty( 'text' ) && possible_match.text == description.text ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len
return possible_match;
}
if ( possible_match.hasOwnProperty( 'children' ) && _.isArray( possible_match.children ) ) { // eslint-disable-line no-prototype-builtins,max-len
var subsearch = find_item( description, possible_match.children );
if ( subsearch ) {
return subsearch;
}
}
}
return false;
}
obj.getSelectClasses = function( $select ) {
var classesToRemove = [
'select2-hidden-accessible',
'hide-before-select2-init',
];
var originalClasses = $select.attr( 'class' ).split( /\s+/ );
return _.difference( originalClasses, classesToRemove );
};
obj.element = function( field, args ) {
var $select = $( field );
var args = $.extend( {}, args ); // eslint-disable-line no-redeclare
var carryOverData = [ // eslint-disable-line no-unused-vars
'depends',
'condition',
'conditionNot',
'condition-not',
'conditionNotEmpty',
'condition-not-empty',
'conditionEmpty',
'condition-empty',
'conditionIsNumeric',
'condition-is-numeric',
'conditionIsNotNumeric',
'condition-is-not-numeric',
'conditionChecked',
'condition-is-checked',
];
var $container;
// Add a class for dropdown created
$select.addClass( obj.selector.created.className() );
// args.debug = true;
// For Reference we save the jQuery element as an Arg.
args.$select = $select;
// Auto define the Width of the Select2.
args.dropdownAutoWidth = true;
args.width = 'resolve';
// CSS for the container
args.containerCss = {};
// Only apply visibility when it's a Visible Select2.
if ( $select.is( ':visible' ) ) {
args.containerCss.display = 'inline-block';
args.containerCss.position = 'relative';
}
// CSS for the dropdown
args.dropdownCss = {};
args.dropdownCss.width = 'auto';
// When we have this we replace the default with what's in the param.
if ( $select.is( '[data-dropdown-css-width]' ) ) {
args.dropdownCss.width = $select.data( 'dropdown-css-width' );
if ( ! args.dropdownCss.width || 'false' === args.dropdownCss.width ) {
delete args.dropdownCss.width;
delete args.containerCss;
}
}
// By default we allow The field to be cleared
args.allowClear = true;
if ( $select.is( '[data-prevent-clear]' ) ) {
args.allowClear = false;
}
// Pass the "Searching..." placeholder if specified
if ( $select.is( '[data-searching-placeholder]' ) ) {
args.formatSearching = $select.data( 'searching-placeholder' );
}
// If we are dealing with a Input Hidden we need to set the Data for it to work
if ( ! $select.is( '[data-placeholder]' ) && $select.is( '[placeholder]' ) ) {
args.placeholder = $select.attr( 'placeholder' );
}
// If we are dealing with a Input Hidden we need to set the Data for it to work.
if ( $select.is( '[data-options]' ) ) {
args.data = $select.data( 'options' );
}
// With less then 10 args we wouldn't show the search.
args.minimumResultsForSearch = 10;
// Prevents the Search box to show
if ( $select.is( '[data-hide-search]' ) ) {
args.minimumResultsForSearch = Infinity;
}
// Makes sure search shows up.
if ( $select.is( '[data-force-search]' ) ) {
delete args.minimumResultsForSearch;
}
// Allows freeform entry
if ( $select.is( '[data-freeform]' ) ) {
args.createTag = obj.freefrom_create_search_choice;
args.tags = true;
$select.data( 'tags', true );
}
if ( $select.is( '[multiple]' ) ) {
args.multiple = true;
// Set the max select items, if defined
if ( $select.is( '[data-maximum-selection-size]' ) ) {
args.maximumSelectionSize = $select.data( 'maximum-selection-size' );
}
// If you don't have separator, add one (comma)
if ( ! $select.is( 'data-separator' ) ) {
$select.data( 'separator', ',' );
}
if ( ! _.isArray( $select.data( 'separator' ) ) ) {
args.tokenSeparators = [ $select.data( 'separator' ) ];
} else {
args.tokenSeparators = $select.data( 'separator' );
}
args.separator = $select.data( 'separator' );
// Define the regular Exp based on
args.regexSeparatorElements = [ '^(' ];
args.regexSplitElements = [ '(?:' ];
$.each( args.tokenSeparators, function ( i, token ) {
args.regexSeparatorElements.push( '[^' + token + ']+' );
args.regexSplitElements.push( '[' + token + ']' );
} );
args.regexSeparatorElements.push( ')$' );
args.regexSplitElements.push( ')' );
args.regexSeparatorString = args.regexSeparatorElements.join( '' );
args.regexSplitString = args.regexSplitElements.join( '' );
args.regexToken = new RegExp( args.regexSeparatorString, 'ig' );
args.regexSplit = new RegExp( args.regexSplitString, 'ig' );
}
// Select also allows Tags, so we go with that too
if ( $select.is( '[data-tags]' ) ) {
args.tags = $select.data( 'tags' );
args.createSearchChoice = function( term, data ) { // eslint-disable-line no-unused-vars
if ( term.match( args.regexToken ) ) {
return { id: term, text: term };
}
};
if ( 0 === args.tags.length ) {
args.formatNoMatches = function() {
return $select.attr( 'placeholder' );
};
}
}
// When we have a source, we do an AJAX call
if ( $select.is( '[data-source]' ) ) {
var source = $select.data( 'source' );
// For AJAX we reset the data
args.data = { results: [] };
// Format for Parents breadcrumbs
args.formatResult = function ( item, container, query ) { // eslint-disable-line no-unused-vars,max-len
if ( 'undefined' !== typeof item.breadcrumbs ) {
return $.merge( item.breadcrumbs, [ item.text ] ).join( ' » ' );
}
return item.text;
};
// instead of writing the function to execute the request we use Select2's convenient helper.
args.ajax = {
dataType: 'json',
type: 'POST',
url: obj.ajaxurl(),
// parse the results into the format expected by Select2.
processResults: function ( response, page, query ) { // eslint-disable-line no-unused-vars
if ( ! $.isPlainObject( response ) || 'undefined' === typeof response.success ) {
console.error( 'We received a malformed Object, could not complete the Select2 Search.' ); // eslint-disable-line max-len
return { results: [] };
}
if (
! $.isPlainObject( response.data )
|| 'undefined' === typeof response.data.results
) {
console.error( 'We received a malformed results array, could not complete the Select2 Search.' ); // eslint-disable-line max-len
return { results: [] };
}
if ( ! response.success ) {
if ( 'string' === $.type( response.data.message ) ) {
console.error( response.data.message );
} else {
console.error( 'The Select2 search failed in some way... Verify the source.' );
}
return { results: [] };
}
return response.data;
},
};
// By default only send the source
args.ajax.data = function( search, page ) {
return {
action: 'tribe_dropdown',
source: source,
search: search,
page: page,
args: $select.data( 'source-args' ),
};
};
}
// Attach dropdown to container in DOM.
if ( $select.is( '[data-attach-container]' ) ) {
// If multiple, attach container without search.
if ( $select.is( '[multiple]' ) ) {
$.fn.select2.amd.define(
'AttachedDropdownAdapter',
[
'select2/utils',
'select2/dropdown',
'select2/dropdown/attachContainer',
],
function( utils, dropdown, attachContainer ) {
return utils.Decorate( dropdown, attachContainer );
}
);
args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedDropdownAdapter' );
// If not multiple, attach container with search.
} else {
$.fn.select2.amd.define(
'AttachedWithSearchDropdownAdapter',
[
'select2/utils',
'select2/dropdown',
'select2/dropdown/search',
'select2/dropdown/minimumResultsForSearch',
'select2/dropdown/attachContainer',
],
function( utils, dropdown, search, minimumResultsForSearch, attachContainer ) {
var adapter = utils.Decorate( dropdown, attachContainer );
adapter = utils.Decorate( adapter, search );
adapter = utils.Decorate( adapter, minimumResultsForSearch );
return adapter;
}
);
args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedWithSearchDropdownAdapter' );
}
}
// Save data on Dropdown
$select.data( 'dropdown', args );
$container = $select.select2TEC( args );
// Propagating original input classes to the select2 container.
$container.data( 'select2' ).$container.addClass( obj.getSelectClasses( $select ).join( ' ' ) );
// Propagating original input classes to the select2 container.
$container.data( 'select2' ).$container.removeClass( 'hide-before-select2-init' );
$container.on( 'select2:open', obj.action_select2_open );
/**
* @todo @bordoni Investigate how and if we should be doing this.
*
if ( carryOverData.length > 0 ) {
carryOverData.map( function( dataKey ) {
var attr = 'data-' + dataKey;
var val = $select.attr( attr );
if ( ! val ) {
return;
}
this.attr( attr, val );
}, $container );
}
*/
};
obj.ajaxurl = function() {
if ( 'undefined' !== typeof window.ajaxurl ) {
return window.ajaxurl;
}
if ( 'undefined' !== typeof TEC && 'undefined' !== typeof TEC.ajaxurl ) {
return TEC.ajaxurl;
}
console.error( 'Dropdowns framework cannot properly do an AJAX request without the WordPress `ajaxurl` variable setup.' ); // eslint-disable-line max-len
};
obj.action_select2_open = function( event ) { // eslint-disable-line no-unused-vars
var $select = $( this );
var select2Data = $select.data( 'select2' );
var $search = select2Data.$dropdown.find( obj.selector.searchField ); // eslint-disable-line es5/no-es6-methods,max-len
select2Data.$dropdown.addClass( obj.selector.dropdown.className() );
// If we have a placeholder for search, apply it!
if ( $select.is( '[data-search-placeholder]' ) ) {
$search.attr( 'placeholder', $select.data( 'searchPlaceholder' ) );
}
};
/**
* Configure the Drop Down Fields
*
* @param {jQuery} $fields All the fields from the page
* @param {array} args Allow extending the arguments
*
* @return {jQuery} Affected fields
*/
obj.dropdown = function( $fields, args ) {
var $elements = $fields.not( '.select2-offscreen, .select2-container, ' + obj.selector.created.className() ); // eslint-disable-line max-len
if ( 0 === $elements.length ) {
return $elements;
}
// Default args to avoid Undefined
if ( ! args ) {
args = {};
}
$elements
.each( function( index, element ) {
// Apply element to all given items and pass args
obj.element( element, args );
} );
// return to be able to chain jQuery calls
return $elements;
};
$( function() {
$( obj.selector.dropdown ).tribe_dropdowns();
} );
// Addresses some problems with Select2 inputs not being initialized when using a browser's "Back" button.
$( window ).on( 'unload', function() {
$( obj.selector.dropdown ).tribe_dropdowns();
});
} )( jQuery, tribe_dropdowns, window.underscore || window._ );
/*! elementor-pro - v3.5.1 - 10-11-2021 */
.elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:1024px){.elementor-cta{cursor:pointer}}@media (min-width:-1px){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:1024px){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:767px){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0}
Πώς να έρθετε σε επαφή με την Υποστήριξη Πελατών Καζίνο Διαδικτύου - premier mills
Πώς να έρθετε σε επαφή με την Υποστήριξη Πελατών Καζίνο Διαδικτύου
/ Uncategorized / Πώς να έρθετε σε επαφή με την Υποστήριξη Πελατών Καζίνο Διαδικτύου
Θυμηθείτε ότι απάντησε στις δικές σας ερωτήσεις προστασίας ακριβώς μετά από τα οποία απλά κάντε κλικ στο “Επιβεβαίωση απαντήσεων”. Εάν επιθυμείτε να κάνετε αλλαγές στις ερωτήσεις ή τις απαντήσεις, μπορείτε να χρησιμοποιήσετε τους νέους συνδέσμους “Επεξεργασία”. Καθώς θα χρειαστεί να έρθετε σε επαφή με την εξυπηρέτηση πελατών για την πλειοψηφία των παραγόντων, εδώ είναι μερικές από τις δικές σας πολύ δημοφιλείς στιγμές. Ο νέος χρόνος απόκρισης μπορεί να ποικίλει ανάλογα με κάθε επιχείρηση τυχερών παιχνιδιών, οπότε θα πρέπει να είστε σκεπτικοί για να το κάνετε αυτό.
Διαβάστε περισσότερα – Καλύτερες στρατηγικές κλιμάκωσης για τους οργανισμούς εξυπηρέτησης πελατών
Συνεχώς κοντά στην κάτω γωνία της δικής σας οθόνης, έτσι ώστε η φόρμα είναι εξαιρετικά προφανώς βρεθεί στον ιστότοπο του καζίνο σας. Μέσα σε λίγα λεπτά, οι χρήστες του συμβόλου ομιλίας θα ξεκινήσουν μια συνομιλία που έχει καλό πράκτορα βοήθειας. Η επαφή με τη σχετική έρευνα σχετικά με το πρόβλημά σας – το όνομα χρήστη και τους κωδικούς πρόσβασης, τα αναγνωριστικά προσφορών, διαφορετικά οθόνη -screenshots – είναι δυνατόν να είστε προετοιμασμένοι για να μιλήσετε σε πραγματικό χρόνο.
On-line καζίνο Προειδοποιητική σημαία υποστήριξης πελατών για αποφυγή
Οι οργανισμοί όσο και οι ΗΠΑ παρέχουν την υλοποιημένη κοινωνική Διαβάστε περισσότερα δικτύωση λόγω της εξυπηρέτησης πελατών τους και οι ηλεκτρονικές επιχειρήσεις τυχερών παιχνιδιών έχουν υιοθετήσει αγωγή. Σχεδόν όλοι έχουν και τα δύο ένα Twitter, διαφορετικά το MySpace Membership, πολύ συγκεκριμένες επιχειρήσεις τυχερών παιχνιδιών έχουν παρατείνει τα κανάλια εξυπηρέτησης πελατών τους για να ενσωματώσουν αυτές τις εναλλακτικές λύσεις. Μια έντονη βελτιωμένη στρατηγική περίθαλψης πελατών είναι σημαντική για την αίσθηση των πελατών. Εδώ, οι λειτουργίες που αναθέτουν σε εξωτερικούς συνεργάτες, για παράδειγμα, το Helpware είναι σε θέση να στραφούν προς τη βαθμολογία ικανοποίησης του πελάτη.
Εν τω μεταξύ, οι καζίνο που βασίζονται στο διαδίκτυο αντιμετωπίζουν μια απειλητική για τη ζωή δυσκολίες-λαμβάνοντας βοήθεια με το καλύτερο επίπεδο, προκειμένου οι επαγγελματίες να λαμβάνουν παγκόσμια. Για να το κάνετε σωστό, επιθυμείτε μια επιτυχημένη ομάδα εξυπηρέτησης πελατών για να εξασφαλίσετε ότι το ταξίδι ενός παίκτη με το εμπορικό σήμα σας είναι απλό. Όπως, σε περίπτωση που ο χρήστης έχει κολλήσει τελικά και την κατεύθυνση των απαιτήσεων, είναι απαραίτητο να προσφέρει μια απλή ποιότητα προτού να εξαγριωθεί και να επιλέξει να φύγει. Μία από τις πολλές ταχύτερες απαντήσεις που σχετίζονται με τη λύση πελατών του Internet Casino είναι στην πραγματικότητα ζωντανή συνομιλία.
Καλύτερα θετικά και αρνητικά της εξωτερικής ανάθεσης
Η διαχείριση ενός μεγάλου όγκου των ερωτήσεων και των καταγγελιών των πελατών σε μια εξαιρετική καθημερινή βάση μπορεί να είναι εξαιρετικά κουραστική. Που έχουν έναν συνεργάτη εξωτερικής ανάθεσης, θα έχετε τη δυνατότητα να ενισχύσετε την υπηρεσία υπηρεσίας υποστήριξης – καθώς και η διαδικασία μετατροπής σας τείνουν να ανεβαίνουν στα ύψη. Η πλήρης, προηγμένη υπηρεσία υποστήριξης αυξάνει την ανάκληση του εμπορικού σήματος και μπορείτε να υποστηρίξετε, όταν είστε κακή λύση θα οδηγήσει τελικά σε ανθρώπους να βγουν από αυτό το site.
Ως εκ τούτου, πρέπει να γνωρίζουν ότι το νεότερο καζίνο δεν θα έχει αθέμιτο πλεονέκτημα. Οι χρήστες θα μπορούν να απολαύσουν μια απλή αλλά αποτελεσματική, αξιόπιστη και θα αξιόπισαν την αίσθηση του τζόγου κάθε φορά που συμμετέχουν. Λάβετε υπόψη ότι η λίστα δεν είναι το συμπληρωματικό, ακόμη και όταν έχουμε άλλα προϊόντα που δεν διαθέτουν γεύματα που περιέχουν γλουτένη. Ο τρόπος να γνωρίζουμε αν τα ζητήματά μας έχουν ένα μεγάλο συστατικό γλουτένης πρέπει να είναι να συνειδητοποιήσουμε την ταυτότητα της μονάδας.
Και να επικοινωνήσετε με την τρέχουσα βοήθεια διεύθυνσης email
Για να εξασφαλιστεί η φήμη, ο νεότερος εκπρόσωπος πιθανόν να διερευνήσει αρκετές ανησυχίες για την προστασία που χρειάζεστε για να εισιτήρια για να μπορέσετε να συνεχίσετε να σας βοηθούν. Είναι σκόπιμο να έχετε τις προτάσεις σας έτοιμες να τους επιτρέψετε να προχωρήσουν γρήγορα από αυτό το έργο και μπορείτε να επιλύσετε το ερώτημά σας. Ενώ οι φίλοι Α, θα βρείτε αυστηρές διαδικασίες για να σταματήσετε το crossover από μολυσματικές ουσίες για τα σχεδόν όλα τα άλλα προϊόντα που δεν υποστηρίζουν το αλλεργιογόνο. Η απόλαυση τελειώνει τη λειτουργία χαμηλότερη από ό, τι όταν εσείς έχετε ένα συγκεκριμένο θέμα ίσως να μην απαντήσετε σε όλη την ιστοσελίδα του αλλεργιογόνου μας.
Ως αποτέλεσμα, οι επαγγελματίες δεν χρειάζεται να πηδούν ως αποτέλεσμα των στεφάνων και θα μιλήσετε με πολλούς εκπροσώπους. Όσο υψηλότερο ενημερώνονται οι εργαζόμενοι σας, τόσο μεγαλύτεροι παρακολουθούν τη φροντίδα των ερωτημάτων πελατών σε αυτό το νωρίτερο σημείο εκτός επαφής. Επιπλέον, θα πρέπει να είναι σε θέση να κάνουν τους επαγγελματίες να αισθάνονται άνετα και να είναι σίγουροι ότι εσείς ή εσείς στα μετρητά τους είναι ασφαλής. Μια εξαιρετική φροντίδα πελατών δοκιμάστε ένα ζωτικό στοιχείο στην επιτυχία των καζίνο που βασίζονται στο διαδίκτυο. Αντί για τις τυπικές επιχειρήσεις τυχερών παιχνιδιών, με την υποστήριξη πελατών στο σπίτι, οι ηλεκτρονικές χαρτοπαικτικές λέσχες βασίζονται εξ ολοκλήρου στα κανάλια σας για να βοηθήσουν τους επαγγελματίες. Ωστόσο, πολλά νέα καζίνο που βασίζονται στο διαδίκτυο παραβλέπουν ότι το στοιχείο τέχνης της υπηρεσίας υποστήριξης.
Σχετικά με το πώς να εκτιμήσετε την αποτελεσματική αλληλεπίδραση στο τοπικό καζίνο σας, θα πρέπει επίσης να εξετάσετε ό, τι κάνουν στο τμήμα FAQ τους.
Όταν η αλήθεια λέγεται ότι υπάρχει ένα πραγματικό εισόδημα μέσα, οι σελίδες συνήθως προβλέπουν τις υπηρεσίες.
Τα καζίνο με βάση το διαδίκτυο διαθέτουν πιστοποιητικά αρχών που τους χρειάζονται για να παρέχουν αποτελεσματική υπηρεσία υποστήριξης.
Αυτές είναι η αμοιβή που παίζει η Μάλτα, οι κυβερνητικές οντότητες μακριά από το Curacao ή το τμήμα NJ της διοίκησης τυχερών παιχνιδιών στην περίπτωση των περισσότερων επιχειρήσεων τυχερών παιχνιδιών στην Αμερική.
Ενώ θα χρειαστείτε υπηρεσία υποστήριξης επικοινωνίας για ορισμένους παράγοντες, παρακάτω είναι μερικές από τις πολύ δημοφιλείς στιγμές.
Η Υπηρεσία Υποστήριξης είναι η σπονδυλική στήλη των καζίνο στο Διαδίκτυο, καθώς οι άνθρωποι είναι επικοινωνία με έναν εκπρόσωπο του ιστότοπου. Παρακαλούμε να ολοκληρώσετε τη λειτουργία παρακάτω για όσους έχουν μια συγκεκριμένη ερώτηση σχετικά με τα πιάτα μέσα στα προβλήματά μας. Όλοι θέλουμε να μάθουμε περισσότερα για τα τρόφιμα που καταναλώνουμε – από τα τρόφιμα και μπορείτε να είναι διαθέσιμα μακριά από έτσι μπορείτε να παράγετε τον τρόπο που παράγεται.
Απίθανο μπόνους
Αυτό είναι όπου μια αστρική εμπειρία αγοραστών βοηθά να κάνει τη διάκριση. Ο καθορισμός των προβλημάτων και μπορείτε να αντιδράσετε τις ερωτήσεις των συμμετεχόντων το συντομότερο δυνατό είναι ένα σημαντικό στοιχείο της παράδοσής σας για να αντιμετωπίσετε σίγουρα. Αρχικά, διαβεβαιώνουν ότι οι επισκέπτες σας θα συνεχίσουν να είναι αφιερωμένοι στο εμπορικό σήμα σας. Ταυτόχρονα, επειδή οι άνθρωποι συνήθως παίζουν στο διαδίκτυο που έχουν ένα πραγματικό εισόδημα, πρέπει να πιστεύουν ότι είστε επίσης αρκετά καλοί και έτοιμοι να προσφέρουν μια απροσδόκητη λύση. Δημιουργήστε ένα απλό για να μεταβείτε μετά από τη φόρμα επικοινωνίας στον ιστότοπό σας, ένας άνθρωπος είναι να συμπληρώσετε για να φτάσετε στο δικό σας. Επίσης, επειδή τόσοι πολλοί από αυτούς συναντούν την τρέχουσα λύση διεύθυνσης ηλεκτρονικού ταχυδρομείου, φροντίστε να εμφανίσετε την τρέχουσα διεύθυνση ηλεκτρονικού ταχυδρομείου σας εμφανώς.
© premier mills. 2025 All rights reserved